Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР11-С++-01-мая-2012.doc
Скачиваний:
18
Добавлен:
15.09.2019
Размер:
2.5 Mб
Скачать

1.8. Алгоритмы обработки двумерных массивов

Программирование вычислительных процессов, содержащих многомерные массивы, основано на использовании вложенных циклических процессов. Поэтому блок-схемы алгоритмов задач на многомерные массивы базируются, как правило, на типовой блок-схеме организации вложенных циклических процессов (см. лаб. работу № 9). Вычисления же реализуется обычно с ис­пользованием операторов цикла и, в первую очередь, оператора цикла со спецификацией типа арифметической прогрессии (см. лаб. работу № 9).

Программирование вычислительных процессов, содержащих многомерные массивы, рассмотрим на конкретных примерах.

1.8.1. Ввод и вывод матрицы

//Ввод матрицы

float x[10][10];

cout << "Введите m,n";

cin >>m >> n;

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

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

{

cout <<"Введите "x[" << i << "," << j <<"]= ";

cin >> x[i][j];

}

//Вывод матрицы

cout <<"Матрица x:";

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

{ for(j=0;j<n;j++) cout <<x[i][j];

cout <<"\n";

}

Рис. 11.2. Ввод-вывод матрицы

Замечание: если в текущий момент необходимо обрабатывать не все 10 строк и 10 столбцов, то нужно использовать вспомогательные переменные m и n (при этом должны выполнятся условия m≤10 и m≤10); не забудьте предварительно задать значения переменным m и n – с помощью оператора присваивания или использовав оператор ввода).

Примечание. Ввод-вывод динамической матрицы отличается от ввода-вывода статической матрицы лишь описанием матрицы.

1.8.2. Заполнение матрицы случайными числами

Ниже приведен пример заполнения матрицы 5Х4 случайными числами.

int k;

int arr[5][4]; //объявление массива 5Х4 – 5 строк 4 колонки

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

{

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

{ //обработка данных

k=rand()%10+1; //вычисление случайного числа в диапазоне 1-10

arr[i][j]=k; //сохранение случайного числа в массиве

}

}

1.8.3. Определение количество элементов, больших заданного а и расположенных в строках с нечетными номерами

/* Определение количества элементов,

больших заданного А и расположенных

в строках с нечетными номерами */

#include <stdio.h>

#include <math.h>

int main ( )

{

int i, j, m, n, K;

float B [10][10];

float A; //Описание переменных

cout <<" Введите число строк и столбцов";

cin >> m >>n;

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

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

{

cout <<"Введите "x[" << i << "," << j <<"]= ";

cin >> b[i][j];

}

cout << "Матрица B:";

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

{ for(j=0;j<n;j++) cout <<b[i][j];

cout <<"\n";

}

cout <<" Введите число A";

cin >> A;

K=0;

for ( i=1; i<m; i=i+2)

for ( j=0; j<n;j++) if( B[i][j]>A) K=K+1;

cout << "K = " << K << endl;

}//конец main

Рис. 11.3. Ввод-вывод матрицы

Таблица 11.3

Таблица соответствия

Переменные в

задаче

Имя на языке

Си

Тип

Комментарий

K

K

int

Искомое количество элементов

B

B

float

Двумерный статический массив

A

A

float

Заданное число

-

i

int

Номер строки

-

1

int

Номер столбца

Тесты:

-3;

8;

-2;

10;

7;

82;

-4

1)

В=

-9;

0;

-3;

85;

3;

40;

9

A= 4; K=7.

-1;

8;

7;

-95;

4;

-5;

67

-4;

-7;

8;

9;

2;

-8;

-5

2)

В=

-2;

10;

0;

9;

-8;

7;

-5

A= 10; K=0.

-7;

6;

-9;

7;

0;

-3;

7