Time_t t; // текущее время для инициализации




// генератора случайных чисел

srand((unsigned) time(&t)); // инициализация генератора

// случайных чисел

m = mass_max-mass_min + 1;

// получение случайного числа в диапазоне

// от mass_min до mass_max

for (i=0; i<nn; i++)

for (j=0; j<nn; j++)

mass[i][j]=rand()% m + mass_min;

}

// 2. определение суммы максимальных элементов диагоналей массива

int summa_max(int nn, int mass[nn][nn])

{

int i, max_1, max_2;

max_1 = mass[0][0];

for (i=1; i<nn; i++)

if (mass[i][i] > max_1)

max_1 = mass[i][i];

max_2 = mass[0][nn-1];

for (i=1; i<nn; i++)

if (mass[i][nn-i-1] > max_2)

max_2 = mass[i][nn-i-1];

return max_1 + max_2;

}

4. Компиляция, отладка, тестирование и получение результата:

 

Задание 2.

  1. Создать процедуру:

- определяющую максимальный и минимальный элементы вектора vectorn,

- сортирующую элементы, находящиеся между ними, по возрастанию.

Перед началом поиска максимального элемента max вектора vectorn принимаем за него элемент vector1. После этого сравниваем остальные элементы вектора vectori (i=2,…,n) с текущим максимумом: если очередной элемент больше текущего максимума max, то сейчас он – текущий максимум. Запоминаем индекс текущего максимума i_max.

Таким же образом определяем минимальный элемент вектора min и его индекс i_min.

Сравниваем индексы найденных элементов:

- если i_min < i_max, то сортируем элементы вектора от i_min+1 до i_max-1,

- если i_max < i_min, то сортируем элементы вектора от i_max+1 до i_min-1,

 

  1. Схема алгоритма решения задачи

 

2.1. Головная программа:

 

 

2.2. Подпрограмма-процедура:

  1. Код программы

 

3.1. На языке Паскаль:

 

Program Variant_0;

Uses WinCrt;

Const n = 10; {задание размера вектора именованной константой}

Type TVect=Array [1..n] Of Integer;{описание нового типа}

Var i, j: Word;

vector: TVect;

min, max, v_min, v_max: Integer;

Procedure Sort_max_min(Var min_vector, max_vector: Integer;
Var AA: Array Of Integer);

Var i, j, k, min, max, i_min, i_max, k_nach, k_kon, nn: Integer;

Begin

nn:=High(AA); {индекс последнего элемента открытого вектора}

max:=AA[0];

i_max:=0;

For i:=1 To nn Do {поиск максимального элемента вектора}

If (AA[i]>max) Then

Begin

max:=AA[i];

i_max:=i;

End;

min:=AA[0];

i_min:=0;

For i:=1 To nn Do {поиск минимального элемента вектора}

If (AA[i]<min) Then

Begin

min:=AA[i];

i_min:=i;

End;

min_vector:=min;

max_vector:=max;

If (i_min<i_max) {определяем начало и конец диапазона сортировки}

Then

Begin

k_nach:=i_min+1;

k_kon:=i_max-1;

End

Else

Begin

k_nach:=i_max+1;

k_kon:=i_min-1;

End;

{сортировка элементов между k_nach и k_kon методом “пузырька”}

For i:=k_kon DownTo k_nach+1 Do

For j:=k_nach To i-1 Do

If (AA[j]>AA[j+1]) Then {меняем эти элементы местами}

Begin

k:=AA[j];

AA[j]:=AA[j+1];

AA[j+1]:=k;

End;

End; {процедуры Sort_max_min}

Begin {головной программы}

Randomize; {запуск генератора случайных чисел}

WriteLn('Лабораторная работа №7_2');

WriteLn('Вариант №0');

WriteLn('ИС-11-1');

WriteLn('Пупкин Василий');

WriteLn;

WriteLn('Задайте диапазон случайных чисел');

Write('v_min=');

ReadLn(v_min);

Write('v_max=');

ReadLn(v_max);

For i:=1 To n Do {заполнение вектора случайными числами}

vector[i]:=Random(v_max-v_min + 1) + v_min;

WriteLn;

WriteLn('Исходный вектор:');

For i:=1 To n Do {вывод на экран исходного вектора}

Write(vector[i]:5);

WriteLn;

Sort_max_min(min, max, vector);

WriteLn;

WriteLn('min=', min);

WriteLn('max=', max);

WriteLn;

WriteLn('Полученный вектор:');

For i:=1 To n Do {вывод на экран выходного вектора}

Write(vector[i]:5);

WriteLn;

WriteLn;

End.

3.2. На языке Си:

 

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <time.h>

// прототипы функций

void vorm_vector(int nn, int vect_max, int vect_min, int vect[nn]);

void min_max(int nn, int vector[nn]);

Int main()

{

int i, j, n, vector_min, vector_max;

printf("\nЛабораторная работа №7_2");

printf("\nВариант №0");

printf("\nПО-11-1");

printf("\nПупкин Василий\n");

printf("\nВведите нижнюю границу диапазона:");

scanf("%d", &vector_min);

printf("\nВведите верхнюю границу диапазона:");

scanf("%d", &vector_max);

printf("\nВведите размер вектора:");

scanf("%d", &n);

int vector[n];

printf("\nИсходный вектор:\n");

vorm_vector(n, vector_max, vector_min, vector);

for (i=0; i<n; i++)

printf("%5d", vector[i]);

printf("\n");

min_max(n, vector);

printf("\nВыходной вектор:\n");

for (i=0; i<n; i++)

printf("%5d", vector[i]);

printf("\n");

return 0;

}

//описание функций

// 1. формирование вектора

void vorm_vector(int nn, int vect_max, int vect_min, int vect[nn])

{

int i, m;



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: