Алгоритмы на матрицах

Слайд 2

МАССИВЫ В ПРОГРАММЕ

ОПИСАНИЕ

ОБРАЩЕНИЕ К ЭЛЕМЕНТУ МАССИВА

тип имя[размер_1]…[размер_N]

СИ

имя[индекс_1]…[индекс_N]

СИ

индекс_i - целое выражение, индекс_i =

МАССИВЫ В ПРОГРАММЕ ОПИСАНИЕ ОБРАЩЕНИЕ К ЭЛЕМЕНТУ МАССИВА тип имя[размер_1]…[размер_N] СИ имя[индекс_1]…[индекс_N]
0,1,…,N-1

В Си элементы массивов нумеруются, начиная с нуля.

размеры - только константы

Слайд 3

ДВУМЕРНЫЕ МАССИВЫ В СИ-ПРОГРАММЕ

Пример.

int b[3][5];
b[0][0] b[0][1] ... b[0][4]
b[1][0] b[1][1] ... b[1][4]
b[2][0]

ДВУМЕРНЫЕ МАССИВЫ В СИ-ПРОГРАММЕ Пример. int b[3][5]; b[0][0] b[0][1] ... b[0][4] b[1][0]
b[2][1] ... b[2][4]

В памяти компьютера элементы массива расположены по строкам (чаще меняется последний индекс)

Первый индекс - номер строки, второй - столбца

Слайд 4

Связь массивов с указателями в Си

Связь массивов с указателями в Си

Слайд 5

Двумерные массивы
b[i][j] ⇔ *(b[i]+j) ⇔ *(*(b+i)+j);
&b[i][j] ⇔ b[i]+j ⇔ *(b+i)+j
Для

Двумерные массивы b[i][j] ⇔ *(b[i]+j) ⇔ *(*(b+i)+j); &b[i][j] ⇔ b[i]+j ⇔ *(b+i)+j
любого из трех обозначений элемента двумерного массива программа в кодах получается практически одинаковой по производительности, хотя при использовании арифметики указателей вместо квадратных скобок несколько более короткой.
Хороший стиль программирования предполагает употребление в пределах одной программы одного (из трех) обозначений.

Связь массивов с указателями в Си

Слайд 6

Задача. По итоговой экзаменационной ведомости вычислить средний балл каждого студента и число

Задача. По итоговой экзаменационной ведомости вычислить средний балл каждого студента и число
отличников.

Предметы

Студенты

N≤30, M≤10

Слайд 8

Форма ввода

Input N,M

Input matrix *
< A[0][1]>…

< A[M-1][1]>…

Форма

Форма ввода Input N,M Input matrix * … … … Форма вывода
вывода

i B
} N раз
K=

Слайд 9

1

4

2

3

10

5

8

9

7

6

11

в теле цикла имеется цикл ⇒получаем цикл кратности 2

1 4 2 3 10 5 8 9 7 6 11 в

Слайд 10

Блок 6. Вычисление среднего балла

Блок 6. Вычисление среднего балла

Слайд 11

#include
#include
#include
void main()
{
int N,M,K, i,j; float A[30][10],B;
cout<<”Input

#include #include #include void main() { int N,M,K, i,j; float A[30][10],B; cout
N,M\n”;
cin>>N>>M;
cout <<”Input matrix ”<>”*”< for(i=0;i<=N-1;i++)
for(j=0;j<=M-1;j++)
cin>>A[i][j];//закончен ввод
K=0;
cout<<” i B\n”;//вывод “шапки” таблицы
for(i=0;i<=N-1;i++)// перебор строк - студентов
{ B=0;
for(j=0;j<=M-1;j++)//движение по строке – перебор предметов
B=B+A[i][j];
B=B/M;//вычислили средний балл
cout<<” “< if (fabs(B-5)<1.0e-7)
K=K+1;
}
cout<<” K=”<getch();
}

Слайд 12

Состав данных

Состав данных

Слайд 13

#include
#include
void main()
{int N,M, i,j;
float A[10][10],min[10];
cout<<”Input N, M\n”;

#include #include void main() {int N,M, i,j; float A[10][10],min[10]; cout cin>>N>>M; cout
cin>>N>>M;
cout <<”Input matrix ”< for(i=0;i<=N-1;i++)
for(j=0;j<=M-1;j++)
cin>>A[i][j];//закончен ввод
for (i=0;i {min[i]=a[i][j];
for(j=0;j if (a[i][j] min[i]=a[i][j];
}
cout<<”Results\n”;
for (i=0;i cout< cout<<“\n”;
getch();
}

Для каждой строки матрицы найти минимальное значение элементов

Цикл в цикле - кратный цикл