Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
35
Добавлен:
28.03.2015
Размер:
303.62 Кб
Скачать

Поиск минимального элемента

В листинге 4.4 приведена программа поиска минимального элемента в двумерном массиве (N на M элементов), заполненном целыми числами. Под поиском подразумевается нахождение номера строки и столбца необходимого элемента в двумерном массиве. При этом, если минимальных элементов несколько, то достаточно найти индексы только одного из них. Блок-схема алгоритма приведена на рис. 4.1.

Листинг 4.4. Поиск индексов минимального элемента в двумерном массиве

#include <iostream>

using namespace std;

#include <conio.h>

#include <math.h>

#define N 10

#define NM 11

#define M 20

#define MM 21

void main()

{

int A[NM][NM];

int I,J,Min,Imin,Jmin;

for (I=1;I<=N; I++)

for (J=1;J<=M; J++)

A[I][J]=rand()%100;

Min= A[1][1];

Imin=1;

Jmin=1;

for (I=1;I<=N; I++)

for (J=1;J<=M; J++)

{

if( A[I][J]< Min)

{

Min=A[I][J];

Imin=I; Jmin=J;

}

}

cout<<" I= "<<Imin;

cout<<" J= "<<Jmin;

_getch();

}

Рис. 4.1. Блок-схема к программе листинга 4.4

Изменим предыдущую программу так, чтобы в результате на экран выводились индексы всех минимальных элементов. В этом случае (листинг 4.5) нам потребуется дополнительный цикл для просмотра всех элементов.

Листинг 4.5. Поиск индексов всех минимальных элементов в двумерном массиве

#include <iostream>

using namespace std;

#include <conio.h>

#include <math.h>

#define N 10

#define NM 11

#define M 20

#define MM 21

void main()

{

int A[NM][NM];

int I,J,Min;

for (I=1;I<=N; I++)

for (J=1;J<=M; J++)

A[I][J]=rand()%100;

Min= A[1][1];

for (I=1;I<=N; I++)

for (J=1;J<=M; J++)

{

if( A[I][J]< Min)

Min=A[I][J];

}

for (I=1;I<=N; I++)

for (J=1;J<=M; J++)

if( A[I][J] == Min)

{

cout<<" I="<<I;

cout<<" J="<<J;

}

_getch();

}

Поиск номера строки с минимальной суммой

Рассмотрим задачу поиска номера строки массива, для которой сумма элементов минимальна. Алгоритм представлен на рис. 4.2, а текст программы в листинге 4.6.

Листинг 4.6. Поиск номера строки с минимальной суммой элементов

#include <iostream>

using namespace std;

#include <conio.h>

#include <math.h>

#define N 10

#define NM 11

#define M 20

#define MM 21

void main()

{

int A[NM][NM];

int I,J,Imin,Sum,SumMin;

for (I=1;I<=N; I++)

for (J=1;J<=M; J++)

A[I][J]=rand()%100;

for (I=1; I<=N;I++)

{

Sum=0;

for( J=1; J<= M;J++)

Sum=Sum+A[I][J];

if (I == 1)

{

Imin=1;

SumMin=Sum;

}

else

{

if( SumMin>Sum )

{

SumMin=Sum;

Imin=I;

}

}

}

cout<<"Номер строки с минимальной суммой элементов "<<Imin;

_getch();

}

Рис. 4.2. Блок-схема к программе листинга 4.6

Подсчет числа учащихся

В двумерном массиве хранится информация о количестве учеников в каждом классе всех параллелей школы (параллели нумеруются от 1 до 11). Так, в каждой строке двумерного массива сначала располагается число классов в определенной параллели, а затем последующие элементы содержат число учащихся в каждом классе данной параллели. Пример одной из строк двумерного массива выглядит так:

4 25 23 27 28,

что означает четыре класса в параллели и, соответственно, 25 учеников в первом из классов параллели, 23 ученика во втором классе параллели и т. д.

Необходимо написать программу, которая позволит автоматически определить общее число учащихся в классах с 5-й по 10-ю параллель включительно. Для определенности будем считать, что в каждой параллели не более пяти классов. В листинге 4.7 приведена программа, решающая данную задачу. Для заполнения информации о числе классов в параллелях и числа учащихся мы использовали датчик случайных чисел. Число учащихся в классе варьируется от 20 до 30.

Листинг 4.7. Подсчет числа учащихся в параллелях

#include <iostream>

using namespace std;

#include <conio.h>

#include <math.h>

#define N 11

#define NM 12

#define M 7

#define MM 8

void main()

{

int A[NM][NM];

int I,J,Schet;

for (I=1;I<=N; I++)

A[I][1]=rand()%6;

for (I=1; I<=N;I++)

for (J=1;J<=A[I][1];J++)

A[I][J+1]=20+rand()%10;

Schet=0;

for (I=5;I<= 10;I++)

for (J=1; J<= A[I][1];J++)

Schet=Schet+ A[I][J+1] ;

cout<<" Schet ="<<Schet;

_getch();

}

Соседние файлы в папке файлы по информатике