Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная №8

.docx
Скачиваний:
29
Добавлен:
14.12.2018
Размер:
76.98 Кб
Скачать

Одеський національний політехнічний університет

Інститут комп’ютерних систем

Кафедра інформаційних систем

Варіант №1

Лабораторна робота №8

По дисципліні “Алгоритмізація і програмування”

Тема:“ Програмування алгоритмів обробки двовимірних масивів”

Виконав:

Студент гр. АІ-171

Анищенко М.О.

Перевірили:

Шпиньковський О.А.

Одеса 2017

Мета роботи:

Набуття практичних навичок у створенні програм обробки двовимірних масивів.

Завдання 8.1:

Дана прямокутна матриця [m × n]. Визначити k – кількість «особливих» елементів матриці, вважаючи елемент «особливим», якщо він більше суми інших елементів свого стовпця. Знайти номер стовпчика з максимальною сумою всіх елементів.

БСА:

Код програми:

#include <stdio.h>

#include <stdlib.h>

#define M 3

#define N 3

int main()

{

int matrix[M][N], sum[N];

printf("Enter matrix\n");

for(int i = 0; i < M; i++)

for(int j = 0; j < N; j++)

scanf("%d", &matrix[i][j]);

printf("Matrix\n");

for(int i = 0; i < M; i++)

{

printf("\n");

for(int j = 0; j < N; j++)

printf("%d ", matrix[i][j]);

}

for(int j = 0; j < N; j++)

{

sum[j] = matrix[0][j];

for(int i = 1; i < M; i++)

sum[j]+=matrix[i][j];

}

int k = 0;

for(int j = 0; j < N; j++)

for(int i = 0; i < M; i++)

if(sum[j] - matrix[i][j] < matrix[i][j])

k++;

printf("\nK = %d", k);

int max = 0;

for(int i = 0; i < N; i++)

if(sum[max] < sum[i] )

max = i;

printf("\nMax sum column number %d", max+1);

return 0;

}

Приклад виконання:

1

2

3

4

5

6

7

8

9

Enter matrix

1

2

3

4

5

6

7

8

9

Matrix

1 2 3

4 5 6

7 8 9

K = 2

Max sum column number 3

Process returned 0 (0x0) execution time : 5.674 s

Press any key to continue.

Завдання 8.2:

У кожному стовпці двовимірного масиву поміняти місцями перший негативний елемент і останній нульовий. Якщо таких елементів немає, то повинно бути виведено відповідне повідомлення.

Код програми:

int main()

{

int arr[M][N];

printf("Enter 9 numbers\n");

for(int i = 0; i < M; i++)

for(int j = 0; j < N; j++)

scanf("%d", &arr[i][j]);

printf("Matrix\n");

for(int i = 0; i < M; i++)

{

printf("\n");

for(int j = 0; j < N; j++)

printf("%3d ", arr[i][j]);

}

int count = 0;

for(int j = 0; j < N; j++)

{

int pos_neg = -1, pos_zero = -1;

for(int i = 0; i < M; i++)

if(pos_neg == -1 && arr[i][j] < 0)

pos_neg = i;

else if(arr[i][j] == 0)

pos_zero = i;

if(pos_neg != -1 && pos_zero != -1)

{

int tmp = arr[pos_zero][j];

arr[pos_zero][j] = arr[pos_neg][j];

arr[pos_neg][j] = tmp;

count++;

}

}

if(!count)

printf("\n\nThere are no elements that satisfy the conditions\n");

printf("\nMatrix\n");

for(int i = 0; i < M; i++)

{

printf("\n");

for(int j = 0; j < N; j++)

printf("%3d ", arr[i][j]);

}

return 0;

}

Приклад виконання:

-5

3

0

6

0

8

0

-3

5

Enter 9 numbers

-5

3

0

6

0

8

0

-3

5

Matrix

-5 3 0

6 0 8

0 -3 5

Matrix

0 3 0

6 -3 8

-5 0 5

Process returned 0 (0x0) execution time : 29.577 s

Press any key to continue.

Висновки:

При виконанні ЛР були написані дві програми, що виконують дії з двовимірними масивами.

Під час написання програм не виникло помилок.