Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗФ_ОАиП / Курс Лекций ОАиП.doc
Скачиваний:
65
Добавлен:
21.03.2016
Размер:
5.89 Mб
Скачать

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

На рис. 6.23 представлен алгоритм ввода и вывода двумерного массива.

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

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

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("\n");

}

Рис. 6.23 Графическая схема алгоритма ввода и вывода двумерного массива

6.4.4 Находжение количества элементов согласно заданного условия

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

Таблица 6.3

Таблица соответствия переменных

Переменные в задаче

Имя переменной

на языке Си

Тип

Комментарий

K

K

int

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

B

B

float

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

A

A

float

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

-

i

int

Номер строки

-

j

int

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

Графическая схема алгоритма представлена на рис. 6.24.

Рис. 6.24 Графическая схема алгоритма примера 6.1

Листинг программы:

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

# include <stdio.h>

# include <math.h>

void main ( )

{

int i, j, m, n, K;

float B [10][10];

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

printf (“ Введите число строк и столбцов”);

scanf (“%d %d”, &m, &n);

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

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

{

printf(“Введите B[%d, %d]=”, i, j);

scanf(“%f”, &B[i] [j]);

}

puts("Матрица B:");

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

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

printf("%8.2f",B[i][j]);

printf("\n");

}

puts (“ введите число A”);

scanf (“%f”, &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;

printf(“%d \n”, K);

} //конец main

Тесты:

-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) B= -2; 10; 0; 9; -8; 7; -5 A=10; K=0.

-7; 6; -9; 7; 0; -3; 7

6.4.5 Поиск в двумерном массиве

Пример 6.2. Найти в матрице строку с максимальной суммой элементов.

Графическая схема алгоритма представлена на рис. 6.25.

Рис. 6.25 Графическая схема алгоритма примера 6.2

Листинг программы:

/* Строка с максимальной суммой*/

#include <stdio.h>

main()

{

int m, n, nmax, i, j;

float max, s, 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("\n");

}

s=0;

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

s =s+x[0][j]; //Нач. знач. мax – сумма элем. 0-ой стр.

max=s; nmax=0;

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

{ s=0;

for(j=0;j<n;j++) s+=x[i][j]; // Сумма элем. строк

if(max<s)

{ max=s; nmax=i;}

}

printf("Максимальная сумма %.2f в строке %d\n",max,nmax);

fflush(stdin); getchar();

return(0);

}