- •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.6. Определение, есть ли в матрице столбец, содержащий хотя бы один нулевой элемент
|
|
#include <stdio.h> #include <conio.h> int main() { int m,n,i,j,t,w; float x[10][10]; puts("Введите m,n"); scanf("%d %d",&m,&n); for(i=0;i<m;i++) for(j=0;j<n;j++) { printf("Введите x[%d][%d]=",i, j); scanf("%f', &x[i][j]); } puts("Матрица x:"); for(i=0;i<m;i++) for(j=0;j<n;j++) printf("%8.2f',x[i][j]); printf('W'); } t=1; j=0; //Столбец еще не найден while(j<n && t) { w=1; i=0; //В столбце не найден элем., равный нулю while(i<m && w) if(x[i][j]==0) w=0; else i++; if(w) j++ //В столбце нет равного 0 элем. else t=0; // В столбце есть равный 0 элем. } if(t) рrintf("Нет\n"); else printf("Есть %d %d\n",ij); getch(); return(0); }
|
|
Рис. 11.6. Определение, есть ли в матрице столбец, содержащий хотя бы один нулевой элемент |
|
|
|
При решении задачи используются две вспомогательные переменные t и w:
t = |
|
1, если столбец не найден; |
0, если столбец найден. |
||
|
|
|
w = |
|
1, в столбце не найден элемент, равный нулю |
0, в столбце найден элемент, равный нулю. |
1.8.7. Обработка элементов квадратных матриц относительно главной и побочной диагоналей
|
|
/* Фомирование матрицы */ #include <stdio.h> int main() { const m=10; int i,j,N; int x[m][m]; /* Обнуление матрицы */ for(i=0;i<m;i++) for(j=0;j<m;j++) x[i][j]=0; рrintf("Номер варианта?"); scanf("%d",&N); рrintf("Вариант %d:\n",N); switch(N) { case 1:{ /* Вариант 1 */ for(i=0;i<m;i++) for(j=0;j<i+1;j++) x[i][j]=i-j+1; break;} case 2:{ /* Вариант 2 */ for(j=0;j<m;j++) for(i=j;i<m;i++) x[i][j]=j+1; break; } case 3: { /* Вариант 3 */ for(i=0;i<m;i++) for(j=i;j<m;j++) x[i][j]=i+1; break; } case 4: { /* Вариант 4 */ for(i=0;i<m;i++) for(j=i;j<m;j++) x[i][j]=j-i+1; break; } case 5:{ /* Вариант 5 */ for(i=0;i<m;i++) for(j=0;j<m;j++) x[i][j]=i+1; break; } case 6: { /* Вариант 6 */ for(i=0;i<m;i++) for(j=i;j<m;j++) if (i==j) x[i][j]=1; else x[i][j]=2; break; } case 7:{ /* Вариант 7 */ for(i=0;i<m;i++) for(j=0;j<i+1;j++) x[i][j]=1; break; } case 8:{ /* Вариант 8 / for(i=0;i<m;i++) for(j=0;j<i+1;j++) x[i][j]=(i-j+1)*(i-j+1); break; } case 9: { /* Вариант 9 */ for(j=0;j<m;j++) for(i=j;i<m;i++) x[i][j]=(j+1)*(j+1); break; } case 10:{ /* Вариант 10 */ for(j=0;j<m;j++) for(i=0;i<m;i++) if((i+j)%2==0) x[i][j]=1; else x[i][j]=0; break; } case 11: /* Вариант 11*/ for(i=0;i<m;i++) for(j=m-i-1;j<m;j++) x[i][j]=1; break; } case 12:{ /* Вариант 12 */ for(i=0;i<m;i++) for(j=0;j<m;j++) x[i][j]=(i+1)*(i+1); break; } case 13:{ /* Вариант 13 */ for(i=0;i<m;i++) for(j=m-i-1;j<m;j++) if (i+j==m-1) x[i][j]=1; else x[i][j]=2; break; } case 14:{ /* Вариант 14 */ for(i=0;i<m;i++) for(j=i;j<m;j++) x[i][j]=(j-i+1)*(j-i+1); break;} } // Вывод матрицы for(i=0;i<m;i++) { for(j=0;j<m;j++) printf("%4d",x[i][j]); printf("\n"); } fflush(stdin); getchar(); return(0); }
|
|
Рис. 11.7. Обработка элементов квадратных матриц относительно главной и побочной диагоналей |
|
|
|
2. ЗАДАНИЕ
2.1. Изучить теоретические сведения.
2.2. Разобрать и выполнить примеры к данной лабораторной работе.
2.3. Написать и отладить семь программ на языке С++.
2.4. Задания для выполнения на занятиях
2.4.1. Задание 1. Вычисление сумм, количеств и произведений элементов матрицы
2.4.1.1. Условие задания
В каждой из задач данного раздела (табл. 11.1) предполагается, что задана матрица размером NхM. Программа должна:
1) вводить размерность и элементы матрицы;
2) вводить некоторые дополнительные числа;
3) выполнять действия в соответствии с условием задачи;
4) выводить исходные данные и результаты вычислений.
Исходные данные для отладки программы выбрать самостоятельно. Массив объявить как статический.
Таблица 11.1
Варианты заданий
№ |
Задание |
1 |
Вычислить сумму положительных элементов, расположенных в столбцах с четными номерами. |
2 |
Вычислить произведение отрицательных элементов, расположенных в строках с нечетными номерами. |
3 |
Вычислить сумму квадратов элементов из интервала [A,B], расположенных в строках с четными номерами. |
4 |
Определить количество элементов, больших заданного А и расположенных в строках с нечетными номерами. |
5 |
Вычислить сумму элементов, меньших заданного В и расположенных в столбцах с номерами, кратными 3. |
6 |
Вычислить произведение положительных элементов, расположенных в строках с номерами, кратными 4. |
7 |
Вычислить сумму квадратов отрицательных элементов, расположенных в столбцах с четными номерами. |
8 |
Определить количество элементов, непринадлежащих промежутку (A,B) и расположенных в столбцах с нечетными номерами. |
9 |
Вычислить сумму элементов, неменьших заданного D и расположенных в строках с четными номерами. |
10 |
Вычислить произведение элементов, небольших заданного F и расположенных в строках с нечетными номерами. |
11 |
Вычислить сумму квадратов положительных элементов, расположенных в столбцах с номерами, кратными 3. |
12 |
Определить количество отрицательных элементов, расположенных в строках с номерами, кратными 3. |
13 |
Вычислить сумму элементов, принадлежащих промежутку [A,B) и расположенных в столбцах с четными номерами. |
14 |
Вычислить произведение элементов, больших заданно го Х и расположенных в столбцах с нечетными номерами. |
15 |
Вычислить сумму квадратов элементов, меньших Y и расположенных в строках с нечетными номерами. |
16 |
Определить, сколько положительных элементов расположено в строках с нечетными номерами. |
17 |
Вычислить сумму отрицательных элементов, расположенных в столбцах с номерами, кратными 3. |
18 |
Вычислить произведение элементов, непринадлежащих интервалу (X, Y) и расположенных в строках с номерами, кратными 3. |
19 |
Вычислить сумму квадратов элементов, неменьших заданного Z и расположенных в столбцах с четными номерами. |
20 |
Найти количество элементов, небольших S и расположенных в строках с нечетными номерами. |
21 |
Вычислить сумму положительных элементов, расположенных в строках с четными номерами. |
22 |
Вычислить произведение отрицательных элементов, расположенных в строках с нечетными номерами. |
23 |
Вычислить сумму элементов, принадлежащих промежутку [X, Y] и расположенных в столбцах с номерами, кратными 3. |
24 |
Определить, сколько элементов, больших заданного Т расположено в строках с номерами, кратными 3. |
25 |
Вычислить сумму квадратов элементов, меньших заданного D и расположенных в столбцах с четными номерами. |
26 |
Вычислить произведение положительных элементов, рас положенных в столбцах с нечетными номерами. |
27 |
Вычислить сумму квадратов отрицательных элементов, расположенных в строках с четными номерами. |
28 |
Вычислить количество элементов, не принадлежащих промежутку [B,C) и расположенных в строках с нечетными номерами. |
29 |
Вычислить сумму элементов, по абсолютной величине больших К и расположенных в столбцах с номерами, кратными 3. |
30 |
Вычислить произведение элементов, по абсолютной величине меньших G и расположенных в строках с номерами, кратными 3. |