- •1. Краткие теоретические сведения
- •1.1. Хранение значений в массивах
- •1.2. Объявление переменной массива
- •1.3. Обращение к элементам массива
- •1.4. Использование индексной переменной
- •1.5. Инициализация массива при объявлении
- •1.6. Передача массивов в функции
- •1.8. Алгоритмы обработки двумерных массивов
- •1.8.1. Ввод и вывод матрицы
- •1.8.2. Заполнение матрицы случайными числами
- •1.8.3. Определение количество элементов, больших заданного а и расположенных в строках с нечетными номерами
- •1.8.4. Поиск в матрице строки с максимальной суммой
- •1.8.5. Определение количества строк матрицы, в которых суммы всех элементов отрицательные
- •1.8.6. Определение, есть ли в матрице столбец, содержащий хотя бы один нулевой элемент
- •1.8.7. Обработка элементов квадратных матриц относительно главной и побочной диагоналей
- •2.4.1.2. Пример для варианта 30
- •2.4.1.3. Программа
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Выполнение вычислений в строках и столбцах матрицы
- •2.4.2.1. Условие задания
- •2.4.2.2. Пример для варианта 30
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Дополнительные задачи
- •2.4.3.1. Условие задания
- •2.4.3.2. Пример для варианта 30
- •2.4.3.3. Программа
- •2.4.3.4. Тестирование
- •2.4.4. Задание 4. Перестановки строк или столбцов матрицы
- •2.4.4.1. Условие задания
- •2.4.5.2. Пример для варианта 30
- •2.4.5.3. Программа
- •2.4.5.4. Тестирование
- •2.4.6. Задание 6. Вычисление суммы элементов матрицы
- •2.4.6.1. Условие задания
- •2.4.6.2. Пример для варианта 30
- •2.4.6.3. Программа
- •2.4.6.4. Тестирование
- •2.4.7. Задание 7. Вычисление элементов одномерного массива на основе матрицы
- •2.4.7.1. Условие задания
- •2.4.7.2. Пример для варианта 30
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.8. Задание 8. Комбинированные задачи на двумерные массивы
- •2.4.8.1. Условие задания
- •2.4.8.2. Пример для варианта 30
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.9. Задание 9. Работа с матрицами
- •2.4.9.1. Условие задания
- •2.4.9.2. Пример решения задачи (вариант 30)
- •2.4.9.3. Разработка алгоритма решения
- •2.4.9.4. Определение переменных программы
- •2.4.9.5. Разработка текста программы
- •2.4.9.6. Отладка программы
- •2.4.9.7. Результаты работы программы
- •2.4.9.8. Формирование случайных чисел
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Хранение значений в массивах 2
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 |
|
|
|
|
|
|
|
|
|
|