Разделы презентаций


Обработка массивов

Содержание

3.1 Одномерные массивы Одномерными называются массивы, в котором положение элемента в массиве определяется одним индексом.Объявление одномерных массивовПримеры определения одномерных массивов;int a[10]; - массив на 10 целых чисел;// индекс меняется 0 -

Слайды и текст этой презентации

Слайд 1Глава 3 Обработка массивов
Массив – это упорядоченная совокупность однотипных данных.

Каждому элементу массива соответствует один или несколько индексов, определяющих положение

элемента в массиве.





Объявление массива:
<Тип элемента> <Имя>[<Размер1>] [<Размер2>] ...[=
{<Список значений >}];
Количество индексов задает размерность массива.
Тип индекса – порядковый – определяет доступ к элементу.
Нумерация индексов ВСЕГДА начинается с 0.
Размер – определяет количество элементов по данному индексу.
Тип элемента – любой кроме файла, в том числе, другой массив.
Массив в памяти не может занимать более 2 Гб.


Глава 3 Обработка массивовМассив – это упорядоченная совокупность однотипных данных. Каждому элементу массива соответствует один или несколько

Слайд 23.1 Одномерные массивы
Одномерными называются массивы, в котором положение элемента в

массиве определяется одним индексом.
Объявление одномерных массивов
Примеры определения одномерных массивов;
int a[10];

- массив на 10 целых чисел;// индекс меняется 0 - 9
float mas[20] – массив на 20 вещественных чисел;
char sim[8] – массив на 8 символов;
double massiv[30] – массив на 30 вещественных чисел двойной точности;
unsigned int koord[10] – массив целых беззнаковых чисел .
Индекс меняется от 0 до величины, на 1 меньшей указанной в размере
Инициализация массива при объявлении
int a[5]={0,-36,78,3789,50};
float b[10]={0,-3.6,7.8,3.789,5.0,6.1,0,-6.5,8.9,3.0};
long double c[4]={7.89L,6.98L,0.5L,56.8L};
3.1 Одномерные массивы	Одномерными называются массивы, в котором положение элемента в массиве определяется одним индексом.Объявление одномерных массивовПримеры определения

Слайд 3Операции над одномерными массивами
1. Доступ к элементу массива:

Пример:
int a[5],l;
...


a[0]=51; {прямой доступ}
...
l=3;
a[l]:=3; {косвенный доступ: значения индексов


находятся в переменных}
Операции над одномерными массивами1. Доступ к элементу массива:Пример:int a[5],l; 	... 	a[0]=51; {прямой доступ}	...	l=3;	a[l]:=3; {косвенный доступ: значения индексов

Слайд 4Косвенный доступ к элементам массива
Косвенный доступ позволяет реализовать последовательную обработку

элементов массивов:

for(i=1;i=0;i--) a[i]=i*i;
Прямой доступ
Косвенный доступ

Косвенный доступ к элементам массиваКосвенный доступ позволяет реализовать последовательную обработку элементов массивов:for(i=1;i=0;i--) a[i]=i*i;Прямой доступКосвенный доступ

Слайд 5Операции над массивами (2)
2. Ввод массивов.
Оуществляется поэлементно:
Пример 1. Ввод

элементов одномерного массива

int a[5]; //массив на 5 целых чисел
...
for(i=0;i


printf(“\n”); // вводит последнее Enter и очищает буфер

Значения вводятся через пробел, Tab(→) или Enter(↵):
а) 2 -6 8 56 34 ↵

б) 2 ↵
-6 → 8 ↵
56 ↵
34 ↵


i=0,4,1


a[i]

Операции над массивами (2)2. Ввод массивов. Оуществляется поэлементно:Пример 1. Ввод элементов одномерного массиваint a[5]; //массив на 5

Слайд 6Операции над массивами (3)
3. Вывод массива
Также осуществляется поэлементно.

int b[7]={-3,5,8,-45,0,-1,8};


...
for(j=0;j

a0 a1 a2 a3 a4 a5 a6}
printf(“\n”); {переходим на следующую строку}
...
На экране:

∪∪-3∪∪∪5∪∪∪8∪-45∪∪∪0∪∪-1∪∪∪8


i=0,6,1


a[i]

0

6

Операции над массивами (3) 3. Вывод массиваТакже осуществляется поэлементно.int b[7]={-3,5,8,-45,0,-1,8}; ...for(j=0;j

Слайд 7Пример программы с вводом выводом
// Ex3_1
#include "stdafx.h"
#include
int a[8],b[8];
int i,j,n;
int

main(int argc, char* argv[])
{
puts("Input n

for(i=0;i printf("\n");
puts("Inputed Massiv");
for(i=0;i printf("\n");

Написать программу формирования массива b из отрицательных элементов массива a

Пример программы с вводом выводом// Ex3_1#include

Слайд 8Пример программы с вводом выводом(2)
j=-1;
for(i=0;i

b[j]=a[i];
}
if (j==-1) puts("Massiv b empty");

else
{
puts("New Massiv");
for(i=0;i<=j;i++)printf("%4d",b[i]);
printf("\n");
}
return 0;
}
Пример программы с вводом выводом(2)j=-1;for(i=0;i

Слайд 93.2 Основные приемы программирования обработки одномерных массивов
Все задачи по

работе с массивами можно разбить на следующие группы:
1. Однотипная обработка

массивов.
2. Переформирование массивов.
3. Одновременная обработка нескольких массивов и/или подмассивов.
4. Поисковые задачи.
3.2.1 Однотипная обработка массивов
a) Поэлементная (нахождение суммы элементов, произведения элементов, среднего арифметического, среднего геометрического, подсчет количества элементов, отвечающих определенному условию или обладающих некоторыми признаками, а также их суммы, произведения и т.д. ).
Пример. Написать программу определения максимального элемента массива и его положения в массиве.

3.2 Основные приемы программирования обработки одномерных массивов Все задачи по работе с массивами можно разбить на следующие

Слайд 10

Определить максимальный элемент массива и его номер
45
34
56
2
-3
А
45
0
1
АMAX
IMAX
i
2
3
56

2
4

{
}

Определить максимальный элемент массива и его номер4534562-3А4501АMAXIMAXi235624{}

Слайд 11Программа определения максимального элемента массива и его номера
//Ex3_2;
#include “stdafx.h”
#include


int main(int argc, char* argv[])
{float a[5], amax; int i,

imax;
puts(“Input 5 values:”);
for(i=0;i<5;i++)scanf(“%f “,&a[i]);printf(“\n”);
amax=a[0];
imax=0;
for(i=1;i<5;i++)
if(a[i]>amax)
{ amax=a[i]; imax=i;}
puts(“Values:“);
for(i=0;i<5;i++)printf(“%7.2f ”,a[i]);printf(“\n”);
printf(“Max = %7.2f number = %5d\n”,amax, imax);
return 0; }
Программа определения максимального элемента массива и его номера//Ex3_2;#include “stdafx.h”#include  int main(int argc, char* argv[]) {float a[5],

Слайд 12Однотипная обработка массивов(2)
b) Выборочная (задачи по формулировке сходные с задачами

предыдущего типа, но операция выполняется не надо всеми элементами массива,

а только теми, которые имеют вполне определенное значение индексов).
Особенностью таких задач является наличие определенного закона изменения индексов рассматриваемых элементов.
Пример .
Написать программу, определяющую количество отрицательных элементов среди элементов одномерного массива целых чисел, стоящих на четных местах.

45

-34

12

-25

16

10

11

int A[7]

0 1 2 3 4 5 6

1.Счетный цикл
а) i = 1 – n/2 с шагом 1
Nel=i*2-1
б) i = 1 – n с шагом 2
Nel=i
2. Цикл с постусловием

Однотипная обработка массивов(2)b) Выборочная (задачи по формулировке сходные с задачами предыдущего типа, но операция выполняется не надо

Слайд 13Программа определения количества отрицательных элементов, стоящих на четных местах
// Ex3_3.cpp


#include "stdafx.h"
#include
int a[7];
int i,kol,n;
int main(int argc, char* argv[])
{ puts("Input

n<=7");
scanf("%d",&n);
printf("input %3d elementov massiva\n",n);
for(i=0;i printf("\n");
puts("Inputed Massiv");
for(i=0;i printf("\n");

Начало

Ввод
n

Ввод
a(n)

Вывод
a(n)

1

Программа определения количества отрицательных элементов, стоящих на четных местах// Ex3_3.cpp #include

Слайд 14Продолжение программы


kol=0;
for(i=1;i


return 0;
}

1
a[i]

Продолжение программыkol=0;for(i=1;i

Слайд 153.2.2 Переформирование массива.

Переформирование массива без изменения его размеров (перестановки элементов

различного характера и сортировки).
Пример. Написать программу упорядочивания массива по возрастанию

его элементов.





int A[8]

20

-10

15

-4

6

8

10

19

-10

-4

6

8

10

15

19

20

0

1

2

3

4

5

6

7

Находим минимальный элемент и его номер
2. Меняем его местами с 0
3. В оставшейся чисти массива находим минимальный элемент
4. Меняем его с 1
Далее действие 3 и 4 повторяем, пока не закончится массив

3.2.2 Переформирование массива.Переформирование массива без изменения его размеров (перестановки элементов различного характера и сортировки).Пример. Написать программу упорядочивания

Слайд 16Переформирование массива (2)
// Ex3_4.cpp

#include "stdafx.h"
#include

int a[8];
int i,j,imin,min,n;
int main(int

argc, char* argv[])
{puts("Input n

printf("\n");
puts("Inputed Massiv");
for(i=0;i printf("\n");

Переформирование массива (2)// Ex3_4.cpp #include

Слайд 17Переформирование массивов (3)

for(i=0;i

for(j=i+1;j

}
puts("Sorted Massiv");
for(i=0;i printf("\n");
return 0;
}

j=i+1,n-1,1

i=0,n-2,1

min=a[i]

imin=i

min=a[j]

imin=j

a[j]

a[imin]=a[I]

a[i]=min

да

нет

Переформирование массивов (3)for(i=0;i

Слайд 18Переформирование массивов (4)
b) Переформирование массива с изменением его размеров (вычеркивание

и вставка элементов, отвечающих определенным условиям или обладающих заданными признаками).



Пример. Дан одномерный массив. Вычеркнуть из него все отрицательные элементы. Есть 2 варианта решения.
1.

-3

-5

10

-5

10

6

6

-1

-1

2

2

0

10

6

-1

2

0

0

10

6

2

0

0

0

int B[6]

i=0

i

b[i]<0

j=i,n-2,1

b[j]=b[j+1]

i=i+1

b[n-1]=0

да

да

нет

нет

Переформирование массивов (4)b) Переформирование массива с изменением его размеров (вычеркивание и вставка элементов, отвечающих определенным условиям или

Слайд 19Переформирование массивов (5)
2.
-3
-5
10
6
-1
2
6
i=0 - 5
10
0
2
j= -1
i=0
i=1
i=2
i=3
i=4
i=5
0
0
J=j+1=0
J=j+1=1
J=j+1=2
j= 3 -5
n=6
n=3
j=

-1
i=0,n-1,1
j= j+1
b[i]>=0
b[j]=b[i]
b[i]= 0
i=j+1,n-1,1
n=j+1
да
нет
Ex3_5
#include "stdafx.h"
#include
int b[6];
int i,j,n;
int main(int argc, char*

argv[])
{puts("Input n<=6");
scanf("%d",&n);
printf("input %3d elem. massiva\n",n);
for(i=0;i printf("\n");

Переформирование массивов (5)2. -3-5106-126i=0 - 51002j= -1i=0i=1i=2i=3i=4i=500J=j+1=0J=j+1=1J=j+1=2j= 3 -5 n=6n=3j= -1i=0,n-1,1j= j+1b[i]>=0b[j]=b[i]b[i]= 0i=j+1,n-1,1n=j+1данетEx3_5#include

Слайд 20Переформирование массивов (6)

puts("Inputed Massiv");
for(i=0;i

неотрицательных элементов
if (b[i]>=0)
{ j=j+1;
b[j]=b[i];
}
for(i=j+1;i

оставшихся элементов
b[i]=0;
n=j+1; // новый размер массива

puts("New Massiv");
for(i=0;i printf("\n");
return 0;
}
Переформирование массивов (6) puts(

Слайд 213.2.3 Одновременная обработка массивов
Синхронная обработка нескольких массивов или подмассивов

Пример. Дан массив целых чисел, содержащий четное количество элементов. Определить,

является ли вторая половина массива, копией первой.





1

8

3

9

1

8

9

3

int s[8]

0

1

2

3

4

5

6

7

i= 0 - 3

j= 4 - 7

j=i+4

5

6

4

2

6

4

2

key=true

key=true

key=false

key=1

i=0

key&&i

S[i]<>S[i+4]

key=0

i=i+1

да

нет

да

нет

3.2.3 Одновременная обработка массивовСинхронная обработка нескольких массивов или подмассивов  Пример. Дан массив целых чисел, содержащий четное

Слайд 22Синхронная обработка нескольких массивов или подмассивов
//Ex3_6
#include "stdafx.h"
#include
int main(int argc,

char* argv[])
{int s[8];
int i,n,key;
puts("Input kol.elementov chetnoe n

printf("Input %4d elem \n",n);
for(i=0;i scanf("%d",&s[i]);
puts("Inputed Massiv");
for(i=0;i printf("%3d",s[i]);
printf("\n");

начало

Ввод n

Ввод S(n)

S(n)

1

Синхронная обработка нескольких массивов или подмассивов//Ex3_6#include

Слайд 23Продолжение программы

key=1;
for(i=0;i

ravny");
return 0;
}

1
i=0,n/2-1,1
S[i]S[i+4]
key=true
key=false
да
нет
key
да
нет
Является
Не является
конец

Продолжение программыkey=1; for(i=0;i

Слайд 24Одновременная обработка массивов
б) Асинхронная обработка массивов
Пример. Дан массив А вещественных

чисел. Переписать в массив С все отрицательные элементы массива А.
float

A[5],C[5]

2.4

-6.4

-2.0

-1.9

7.4

i=0






j=-1

i=1

i=2

i=3

j=j+1=0

j=j+1=1

J=j+1=2

i=4

-6.4

-2.0

-1.9

Одновременная обработка массивовб) Асинхронная обработка массивовПример. Дан массив А вещественных чисел. Переписать в массив С все отрицательные

Слайд 25Асинхронная обработка массивов(2)
// Ex3_7.cpp
#include "stdafx.h"
#include

int main(int argc, char*

argv[])
{ float A[5],C[5];
int i,j;
printf("Input 5 elem \n");
for(i=0;i

puts("Inputed Massiv A");
for(i=0;i<5;i++)
printf("%5.2f",A[i]);
printf("\n");
Асинхронная обработка массивов(2)// Ex3_7.cpp #include

Слайд 26Асинхронная обработка массивов(3)
j=-1;
for(i=0;i

C[j]=A[i];}
puts("New Massiv C");
for(i=0;i

0;
}

j=-1

i=0,n-1,1

A[i]<0

C[j]=A[i]

j=j+1

C(j)

да

нет

Асинхронная обработка массивов(3) j=-1; for(i=0;i

Слайд 273.2.4 Поисковые задачи
Пример:
Дан массив А вещественных чисел. Определить первый отрицательный

элемент массива и его номер.

float A[6] ={2.6,4.7,-5.8,-4.0,7.1,-5.0}
2.6
4.7
-5.8
-4.7
7.1
-5.0
i=0
i=1
i=2
key=0
iotr=2
potr=-5.6
iotr=i
key=1
i=0
(key=0) и (i

3.2.4 Поисковые задачиПример:Дан массив А вещественных чисел. Определить первый отрицательный элемент массива и его номер.float A[6] ={2.6,4.7,-5.8,-4.0,7.1,-5.0}2.64.7-5.8-4.77.1-5.0i=0i=1i=2key=0iotr=2potr=-5.6iotr=ikey=1i=0(key=0)

Слайд 28Поисковые задачи (2)

// Ex3_8.cpp
#include "stdafx.h"
#include

int main(int argc, char* argv[])
{

float potr,A[6]={2.6,4.7,-5.8,-4.0,7.1,-5.0};
int i,iotr,key;
puts("Inputed Massiv A");
for(i=0;i

i=0;
key=0;
while((key==0)&&(i<6))
if(A[i]<0)
{key=1;potr=A[i];iotr=i;}
else i++;
printf("potr= %6.2f iotr= %4d\n",potr,iotr);
return 0;
}
Поисковые задачи (2)// Ex3_8.cpp#include

Слайд 293.3 Обработка матриц
Двумерными называются массивы, имеющие два индекса. По аналогии

с математикой, иногда такие массивы называют матрицами.
Для простоты изложения

в дальнейшем будем придерживаться именно этой терминологии.
Описание матриц
int a[4][5] – матрица целого типа из 4 строк и 5 столбцов
индексы меняются первый от 0 до 3, второй от 0 до 4
float matr[10][20] – матрица вещественного типа из 10 строк и 20
столбцов
double x[10][10] - матрица вещественного типа с двойной
точностью из 10 строк и 10 столбцов
В памяти матрицы располагаются по строкам. Быстрее изменяется второй индекс


3.3 Обработка матрицДвумерными называются массивы, имеющие два индекса. По аналогии с математикой, иногда такие массивы называют матрицами.

Слайд 30Расположение матрицы в памяти
Инициализация матриц при объявлении
int A[4][3]
12
45
11
67
21
56
-13
0
90
-54
-87
44




i=0
i=1
i=2
i=3
0
2
1
0
1
2
2
2
0
0
1
1
j=0 -

2
short x[3][4] ={{9,6,-56,0}, {10,3,-4,78}, {-6,8,45,7}};
int A[4][3]={{12,45,11},{67,21,56},{90,0,-13},{44,-87,-54}};

Расположение матрицы в памятиИнициализация матриц при объявленииint A[4][3] 124511672156-13090-54-8744i=0i=1i=2i=3021012220011j=0 - 2short x[3][4] ={{9,6,-56,0}, {10,3,-4,78}, {-6,8,45,7}};int A[4][3]={{12,45,11},{67,21,56},{90,0,-13},{44,-87,-54}};

Слайд 31Операции над матрицами
1. Доступ к элементам матрицы
Пример:

int a[5][4],i,j;
...
a[0][1]=5.1;

{прямой доступ}
...
i=3;j=3
a[i][j]:=23; {косвенный доступ: значения индексов

находятся в переменных}

Операции над матрицами1. Доступ к элементам матрицыПример:int a[5][4],i,j; 	... 	a[0][1]=5.1; {прямой доступ}	...	i=3;j=3	a[i][j]:=23; {косвенный доступ: значения индексов

Слайд 32Операции над матрицами (2)
2. Ввод матриц
Оуществляется поэлементно, по строкам:
Пример 1.

Ввод элементов матрицы
const int n=3;
const int m=4;
float A[n][m];
printf(“Input %3d

strok po %3d elem.\n”);
for(int i=0;i for(int j=0;j scanf(“%f”,&A[i][j]);

i=0,n-1,1

j=0,m-1,1

Ввод A[i][j]

Значения вводятся через пробел, Tab(->) или Enter(↵ ):

2 -6 8 23↵
56 9 0 -7↵
6 12 -56 -8↵

Операции над матрицами (2)2. Ввод матрицОуществляется поэлементно, по строкам:Пример 1. Ввод элементов матрицыconst int n=3;const int m=4;

Слайд 33Операции над матрицами (3)
3. Вывод матриц
Осуществляется поэлементно, по строкам или

по столбцам, в зависимости от требования программы
Пример 1. Вывод элементов

матрицы
....
puts(“ MASSIV”);
for(int i=0;i for(int j=0;j printf(“%7.2f”,A[i][j]);
printf(“\n”);}
Информация на экране:

∪∪∪2.00∪∪−6.00∪∪∪8.00 ∪∪23.00

∪∪∪6.00∪∪12.00∪−56.00∪∪−8.00

∪∪56.00∪∪∪9.00∪∪∪0.00∪∪−7.00

i=0,n-1,1

j=0,m-1,1

A[i,][j]


Операции над матрицами (3)3. Вывод матрицОсуществляется поэлементно, по строкам или по столбцам, в зависимости от требования программыПример

Слайд 343.3.1 Особенности программирования обработки матриц
При обработке матриц используются вложенные циклы.
Обработка

матриц может производиться как по строкам, так и по столбцам.
Так

как матрица расположена в памяти по строкам, второй индекс меняется быстрее. Поэтому при обработке по строкам, внешний цикл индексирует строки, а внутренний столбцы.
for(i=0;i for(j=0;j {…обработка элемента A[ i ] [ j ]...}
4. При необходимости обойти матрицу по столбцам, достаточно изменить последовательность выполнения циклов.
for(j=0;j for(i=0;i {…обработка элемента A[ i ] [ j ]..}
В этих примерах i – номер элемента в строке
j - номер элемента в столбце
3.3.1 Особенности программирования обработки матрицПри обработке матриц используются вложенные циклы.Обработка матриц может производиться как по строкам, так

Слайд 35Поэлементная обработка матрицы
Пример.
Дана матрица вещественного типа. Определить максимальный элемент матрицы

и его координаты в матрице.
float P[3][5];
2.45
17.5
-12.4
20.25
-0.45
45.0
-55.1
12.4
21.5
72.0
2.45
2.45
2.45
2.45
2.45
0
1
2
0
1
2
3
4
pmax=-1*e+10
pmax=2.45
pmax=17.5
imax=-1
jmax=-1
imax=0
pmax=20.25
imax=1
pmax=-1e+10
imax=-1
jmax=-1
i=0,4,1
i=0,2,1
P[i][j]>pmax
pmax=P[i][j]
imax=i
jmax=j
да
нет
jmax=0
jmax=1
jmax=3
pmax=45.0
jmax=0
jmax=4
pmax=72.0

Поэлементная обработка матрицыПример.Дана матрица вещественного типа. Определить максимальный элемент матрицы и его координаты в матрице.float P[3][5]; 2.4517.5-12.420.25-0.4545.0-55.112.421.572.02.452.452.452.452.4501201234pmax=-1*e+10pmax=2.45pmax=17.5imax=-1jmax=-1imax=0pmax=20.25imax=1pmax=-1e+10imax=-1jmax=-1i=0,4,1i=0,2,1P[i][j]>pmaxpmax=P[i][j]imax=ijmax=jданетjmax=0jmax=1jmax=3pmax=45.0jmax=0jmax=4pmax=72.0

Слайд 36Поэлементная обработка матрицы (2)
// Ex3_10.cpp
#include "stdafx.h"
#include
#include
int main(int argc,

char* argv[])
{ float P[3][5],pmax;
int i,j,imax,jmax;
for(i=0;i

of %2d string:\n",i);
for (j=0;j<5;j++) scanf("%f",&P[i][j]);
}
puts(" MATRICA ");
for(i=0;i<3;i++)
{ for (j=0;j<5;j++)
printf("%7.2f ",P[i][j]);
printf("\n");
}

pmax=-1e+6;
imax=-1;
jmax=-1;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
if (P[i][j]>pmax)
{ pmax=P[i][j];
imax=i;
jmax=j;
}

printf("Max Eem. = %7.2f",pmax);
printf(" imax= %4d”,imax+1);
printf(“ jmax=%4d\n",jmax+1);

getch();

return 0;
}

Поэлементная обработка матрицы (2)// Ex3_10.cpp#include

Слайд 37 Поэлементная обработка матрицы (2)
Пример.
Дана вещественная матрица. Определить

номер строки, содержащей самую большую сумму элементов.
2.45
17.5
-2.4
20.25
-0.45
45.0
-55.1
12.4
21.5
72.0
2.45
2.45
2.45
2.45
2.45
0
1
2
0
1
2
3
4
float s[3][5] ;
Sumt=0
im=-1
Sumt=2.45
Sumt=19.95
Sumt=17.55
Sumt=37.8
Sumt=37.35
summ=-1e+10
Summ=37.35
Summ=95.8
Sumt=0
Sumt=45.0
Sumt=-10.1
Sumt=2.3
Sumt=23.8
Sumt=95.8
Sumt=0
Sumt=2.45
Sumt=4.9
Sumt=7.35
Sumt=9.8
Sumt=12.25
im=0
im=1
im=i
im=-1
Sumt=0
i=0,2,1
i=0,4,1
Summ=Sumt
Sumt+=s[i][j]
Sumt>Summ
Summ=-1e+10
да
нет
Summ,im

Поэлементная обработка матрицы (2) Пример. Дана вещественная матрица. Определить номер строки, содержащей самую большую сумму элементов.

Слайд 38Поэлементная обработка матрицы(3)
// Ex3_11.cpp
#include "stdafx.h"
#include
#include
int main(int argc, char*

argv[])
{ float s[3][5],Summ,Sumt;
int i,j,im;
for(i=0;i

string:\n",i+1);
for (j=0;j<5;j++) scanf("%f",&s[i][j]);
}
puts(" MATRICA ");
for(i=0;i<3;i++)
{ for (j=0;j<5;j++)
printf("%7.2f ",s[i][j]);
printf("\n");
}

Summ=-1e+6;
im=-1;
for(i=0;i<3;i++)
{ Sumt=0;
for(j=0;j<5;j++)
Sumt+=s[i][j];
if (Sumt>Summ)
{ Summ=Sumt;
im=i;
}
}
printf("Max Sum Elem. =“); printf(“%7.2f",Summ);
printf(" im= %4d \n",im+1);

getch();

return 0;
}

Поэлементная обработка матрицы(3)// Ex3_11.cpp#include

Слайд 39Выборочная обработка матрицы
Пример. Дана целочисленная матрица. Определить среди четных строк,

строку, имеющую наибольшее среднее арифметическое ее элементов.

int C[4][3]
2
11
-41
-12
6
21
17
-8
32
43
-31
6
0
1
3
0
2
1
2
Sr=0
Srm=-1e+6
im=-1
Sr=-12
Sr=9
Sr=15
Sr=5
Srm=5
im=1
Sr=0
Sr=43
Sr=12
Sr=18
Sr=6
Srm=6
im=3
i=1,3,2
Srm=-1e+6
im=-1
j=0,3,1
Sr=0
Sr+=C[i][j]
Sr=Sr/3
Sr>Srm
Srm=Sr
im=i
Srm=-1e+6
im=-1
i=1
iSrm
Srm=Sr
im=i
i=i+2
да
да
нет
нет
да
нет
a)
b)

Выборочная обработка матрицыПример. Дана целочисленная матрица. Определить среди четных строк, строку, имеющую наибольшее среднее арифметическое ее элементов.

Слайд 40Выборочная обработка матрицы(2)
// Ex3_12.cpp
#include "stdafx.h"
#include
#include
int main(int argc,

char* argv[])
{ int C[4][3]; float Srm,Sr;
int i,j,im;
for(i=0;i

printf(“ %2d string:\n",i+1);
for (j=0;j<3;j++) scanf("%d",&C[i][j]);
}
puts(" MATRICA ");
for(i=0;i<4;i++)
{ for (j=0;j<3;j++)
printf("%4d ",C[i][j]);
printf("\n");
}

Srm=-1e+6;
im=-1;
for(i=1;i<4;i=i+2)
{ Sr=0;
for(j=0;j<3;j++)
Sr+=C[i][j];
Sr=Sr/3;
if (Sr>Srm)
{ Srm=Sr;
im=i;
}
}
printf("Max SR Sum Elem.= ");
printf(" %7.3f",Srm);
printf(" im= %4d \n",im+1);
getch();
return 0;
}

Выборочная обработка матрицы(2)// Ex3_12.cpp #include

Слайд 41Переформирование матрицы
Пример. Дана целочисленная матрица. Отсортировать ее по возрастанию элементов

последнего столбца.

int b[3][4]
10
23
11
34
4
6
22
12
15
11
9
5
0
1
2
3
0
1
2
23
6
22
12
34
11
10
4
10
23
11
34
11
9
5
15
15
9
11
5
4
6
22
12
key=1
i=0
ib[k+1][m-1]
j=0,m-1,1
b[k][m-1=b[k+1][m-1]
b[k+1][m-1=c
c=b[k][m-1]
key=1
да
нет
да
нет
i=i+1

Переформирование матрицыПример. Дана целочисленная матрица. Отсортировать ее по возрастанию элементов последнего столбца. int b[3][4]1023113446221215119501230122362212341110410231134119515159115462212key=1i=0ib[k+1][m-1]j=0,m-1,1b[k][m-1=b[k+1][m-1]b[k+1][m-1=cc=b[k][m-1]key=1данетданетi=i+1

Слайд 42Переформирование матрицы(2)
// Ex3_13.cpp
#include "stdafx.h"
#include
#include
#include
#include
int main(int

argc, char* argv[])
{int n,mat[10][10],i,j,m,k,key,b;
srand( (unsigned)time( NULL ));
printf(" Inputed size of

massiv n,m<=10 \n");
scanf("%d %d",&n,&m);
for (i=0;i for (j=0;j mat[i][j]=rand()/1000-rand()/1000;
printf("\n Inputed Massiv \n");
for(i=0;i for(j=0;j printf("%4d%c",mat[i][j],(j==m-1)?'\n':' ');

key=1;
i=0;
while((i{key=0;
for(k=0;k if(mat[k][m-1]>mat[k+1][m-1])
{ for(j=0;j { b=mat[k][j];
mat[k][j]=mat[k+1][j];
mat[k+1][j]=b;}
key=1;
}
}
printf("\n Sorted massiv \n");
for(i=0;i for(j=0;jprintf("%4d%c",mat[i][j],(j==m-1)?'\n':' ');
getch();
return 0;}

Переформирование матрицы(2)// Ex3_13.cpp #include

Слайд 43
Одновременная обработка массивов и подмассивов. Сумма элементов строк матрицы
А
S
i

j
Подсчет суммы

элементов i-ой
строки
{
}
Дана матрица А(5,5) целого типа. Определить сумму элементов

каждой строки и записать ее в новый массив S.
Одновременная обработка массивов и подмассивов. Сумма элементов строк матрицыАSijПодсчет суммы элементов i-ойстроки {}Дана матрица А(5,5) целого

Слайд 44Программа определения суммы строк марицы (Ex3_9)
#include "stdafx.h"
#include
#include
const int

N=5;
int main(int argc, char* argv[])
{ int a[N][N],i,j,s[N];
for(i=0;

i { printf("Input numbers of %2d string:\n",i);
for (j=0; j }
puts(" MATRICA SUMMA ");
for(i=0;i for (j=0,s[i]=0;j for(i=0; i { for (j=0; j printf("%10d\n",s[i]);
}
getch();
return 0; }
Программа определения суммы строк марицы (Ex3_9)#include

Слайд 45Обработка матрицы по частям
Кроме задач, по приемам похожих на обработку

одномерных массивов, есть большая группа задач, связанных с различными вариантами

обхода матриц, и задач обработки разных групп элементов.

int c[5][5]












































































i=j

i=1 – 4

j=0 – i-1

i=0 – 4

j=i+1- 4

i+j=4
j=4-i

i=1 -4

j=4-i+1 - 4

i= 0 – 3

j=0 – 4-i

Обработка матрицы по частямКроме задач, по приемам похожих на обработку одномерных массивов, есть большая группа задач, связанных

Слайд 46Пример обработки элементов матрицы, лежащих в определенной области
Пример. Дана целочисленная

матрица F(10,10). Определить сумму отрицательных элементов матрицы и их количество,

среди элементов, лежащих выше главной диагонали.

int F[10][10] n=5


























i=0

i=1

i=2

i=3

j=1

j=2

j=3

j=4

j=2

j=3

j=4

j=3

j=4

j=4

kol=0

sum=0

i=1,n-2,1

j=i+1,n-1,1

F[i][j]<0

да

да

нет

kol++

sum=sum+ F[i][j]

Пример обработки элементов матрицы, лежащих в определенной областиПример. Дана целочисленная матрица F(10,10). Определить сумму отрицательных элементов матрицы

Слайд 47Пример программы
// Ex3_14.cpp
#include "stdafx.h"
#include
#include
#include
#include
int main(int

argc, char* argv[])
{int n,mat[10][10],i,j,sum,kol;
srand( (unsigned)time( NULL ));
printf(" Inputed size

of massiv n<=10 \n");
scanf("%d",&n);
for (i=0;i for (j=0;j mat[i][j]=rand()/1000-rand()/1000;
printf("\n Inputed Massiv \n");
for(i=0;i for(j=0;j printf("%4d%c",mat[i][j],(j==n-1)?'\n':' ');

sum=0;
kol=0;
for(i=0;i for(j=i+1;j if(mat[i][j]<0)
{ sum=sum+mat[i][j];
kol=kol+1;
}
printf("Summa “);
printf(“%7d otricatelnyx”,kol); printf(“elementov");
printf(" = %8d\n",sum);

getch();
return 0;
}

Пример программы// Ex3_14.cpp #include

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика