Лабораторная работа № 4
Вложенные циклы и разветвления в матричных задачах.
ЦЕЛЬ РАБОТЫ.
научиться использовать в программах многомерные массивы и сложные сочетания циклов и разветвлений.
ПРАКТИЧЕСКОЕ ЗАДАНИЕ.
Дана квадратная матрица A= вещественных чисел размера NxN. В соответствии с вариантом задания произвести вычисления с элементами матрицы A.
Составьте отчет о выполнении лабораторной работы, в который включите:
Название и цель работы;
Индивидуальное задание;
Текст программы;
Результат решения задачи;
Блок-схему алгоритма решения задачи.
ПРИМЕР ВЫПОЛНЕНИЯ РАБОТЫ.
Поменять местами строки квадратной матрицы A (N=10), содержащие максимальный и минимальный элементы матрицы.
Будем хранить элементы матрицы A в двумерном массиве a[10][10], а текущие значения максимального и минимального элементов и номера их строк в переменных max, min, m и n соответственно.
Предположим, что максимальный и минимальный элементы массива есть его первый элемент. Далее во вложенных циклах будем сравнивать эти значения с остальными элементами и, когда очередной элемент массива окажется больше или меньше значения max и min соответственно, исправим их на новые значения. Одновременно в переменных m и n будем сохранять номер строки этого элемента. И, наконец, если m не равно n, то переставим местами соответствующие строки матрицы.
/* Лабораторная работа 4 */
# include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i, j, m = 0, n = 0;
float a[4][4], max, min, u;
/*Ввод элементов матрицы*/
for(i = 0; i < 10; i++ )
{
printf(”\n”);
for(j = 0; j < 10; j++)
scanf(”%f ”, &a[i][j]);
}
/*Поиск максимального и минимального элементов матрицы */
/*и номеров их строк */
max = min = a[0][0];
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if (a[i][j] > max)
{
max = a[i][j]; m = i;
}
else if (a[i][j] < min)
{
min = a[i][j]; n = i;
}
}
/*Перестановка местами строк матрицы/
if (m != n)
for (i = 0; i < 10; i++)
{
u = a[m][i];
a[m][i] = a[n][i];
a[n][i] = u;
}
/*Вывод элементов новой матрицы/
for (i = 0; i < 10; i++ )
{
printf (”\n”);
for (j = 0; j < 10; j++ )
printf(" %6.2f ", a[i][j]);
}
printf ("\nmax=%f\tmin=%f",max,min);
system("PAUSE");
return 0;
}
Варианты заданий.
№
|
Массив |
Задание |
Условия и ограничения |
1 |
Х[5][5] |
Вычислить сумму и количество положительных элементов массива Х
| |
2 |
А[4][3] |
Вычислить среднее арифметическое значение положительных элементов массива А | |
3 |
Х[3][5] |
Найти сумму целых положительных чисел, кратных 4. | |
4 |
В[6][2] |
Определить максимальный элемент массива В и его порядковый номер |
bij - действительные числа |
5 |
С[4][3] |
Вычислить минимальный элемент массива С и его порядковый номер |
сij - действительные числа |
6 |
D[2][6] |
Найти максимальный и минимальный элементы массива D и поменять их местами |
dij - целые числа
|
7 |
Y[4][2] |
Вычислить среднее геометрическое положительныых элементов массива Y |
- целые числа |
8 |
Z[5][3] |
Найти сумму и количество четных чисел, меньших 10. |
zij - натуральные числа |
9 |
N[5][2] |
Определить сумму элементов массива N, кратных трем ()
|
натуральные числа |
10 |
A[3][5] |
Найти сумму и количество отрицательных элементов массива А
| |
11 |
X[3][3] |
Найти сумму и количество целых положительных чисел, больших 20, меньших 50.
| |
12 |
X[4][4] |
Найти сумму целых положительных чисел, кратных 2 и меньших 50.
|