Лабораторная №12
.docxОдеський національний політехнічний університет
Інститут комп’ютерних систем
Кафедра інформаційних систем
Варіант №1
Лабораторна робота №12
По дисципліні “Алгоритмізація і програмування”
Тема: “ Створення функцій на мові програмування С”
Виконав:
Студент гр. АІ-171
Анищенко М.О.
Перевірили:
Глава М.Г.
Одеса 2017
Мета роботи: Набуття практичних навичок у створенні функцій.
Завдання: Дана прямокутна матриця [m × n]. Визначити k – кількість «особливих» елементів матриці, вважаючи елемент «особливим», якщо він більше суми інших елементів свого стовпця. Знайти номер стовпчика з максимальною сумою всіх елементів.
Код програми:
#include <stdio.h>
#include <stdlib.h>
int max_column(int *a, int M, int N)
{
int sums[N];
for(int i = 0; i < N; i++){
sums[i] = 0;
for(int j = 0; j < M; j++)
sums[i] += *(a + j*N+i); }
int max_i = 0;
for(int i = 1; i < N; i++)
if(sums[i] > sums[max_i])
max_i = i;
return max_i;}
int spec_el_count(int *a, int M, int N){
int res = 0;
int sums[N];
for(int i = 0; i < N; i++){
sums[i] = 0;
for(int j = 0; j < M; j++)
sums[i] += *(a + j*N+i);
for(int j = 0; j < M; j++)
if((sums[i] - *(a + j*N+i)) < *(a + j*N+i) )
res++; }
return res;}
int main()
{ int N, M;
printf("Enter M ");
scanf("%d", &M);
printf("Enter N ");
scanf("%d", &N);
int arr[M][N];
printf("Enter array\n");
for(int i = 0; i < M; i++)
for(int j = 0; j < N; j++)
scanf("%d", &arr[i][j]);
printf("Special elements number = %d\n", spec_el_count(arr,M,N));
printf("Max column index = %d\n", max_column(arr,M,N) + 1);
return 0;}
Приклад виконання:
N = 4
M = 3
2 |
4 |
7 |
9 |
3 |
7 |
-2 |
8 |
4 |
8 |
3 |
-1 |
Висновки:
Написана програма визначає k – кількість «особливих» елементів матриці, вважаючи елемент «особливим», якщо він більше суми інших елементів свого стовпця. Знаходить номер стовпчика з максимальною сумою всіх елементів. Функціонал програми реалізується у функціях.