You are on page 1of 13

ПВНЗ БУКОВИНСЬКИЙ УНІВЕРСИТЕТ

Кафедра комп’ютерних систем і технологій

ЗВІТ
Про виконання лабораторної роботи № 5
“Програмування роботи з масивами мовою С.”
з дисципліни “АЛГОРИТМІЗАЦІЯ І ПРОГРАМУВАННЯ”
Варіант №16

Виконав студент групи “К-11”


Лебідь Е.Ю.
Прийняв викладач
Артеменко О.І.

2020
Лабораторна робота №5
Тема: Програмування роботи з масивами мовою С.
Мета: Реалізація алгоритмів з одновимірними і двовимірними масивами
мовою C.
Завдання: Здобути навички створення, відлагодження та реалізації програм
для обробки даних з одновимірних і двовимірних масивів мовою C.

GitHub: https://github.com/Aves2001/GitHub_Lab_5_Lebid_Eduard

Завдання 1. Створити програми для розв’язування задач згідно свого


варіанта. Значення елементів масиву задавати з клавіатури.

16. Дано масив цілих чисел a[i], і = 1, … , n Знайти кількість додатних та


від'ємних елементів. Якщо кількість від'ємних елементів менше рівна
кількості додатних, то вивести "1", в протилежному випадку "0". Якщо в
масиві присутні нулі – вивести їх порядкові номери.

#include <stdio.h>
#include <conio.h>
#include <windows.h>

int s = 0;
int size = 0;
int zz = 0;

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//

printf("\r\nРозмір масиву = ");


scanf ("%d", &size);

int a[size];

printf("\r\nВведіть масив цілих чисел:\r\n");


do
{
if (s<size)
scanf ("%d", &a[s]);
if (a[s] == 0)
{
zz = 1;
}
s++;
}
while (s<size);

int men0, bil0=0;


int i, j=0;

do
{
if (a[i]>0)
bil0++;
i++;
}
while (i<size);
system("cls");
printf("*************************************\r\n");
printf("* Кількість додатних елементів = %d *\r\n", bil0);

do
{
if (a[j]<0)
men0++;
j++;
}
while (j<size);
printf("* Кількість від'ємних елементів = %d *\r\n", men0);
printf("*************************************\r\n");

if (men0<=bil0)
{
printf("\r\n%c1%c\r\n", '"', '"');
}else printf("\r\n%c0%c\r\n", '"', '"');

if (zz == 1)
{
printf("\r\nПорядкові номери нулів:");
for (int i = 0; i < size; i++)
{
if (i+1 == size || i+1 == size && a[i]==0)
{
printf(" %d.", i+1);
} else if (a[i] == 0) printf(" %d,", i+1);

}
}
// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}

Завдання 2. Створити програми для розв’язування задачі згідно свого


варіанту. Виконати завдання двома способами:
A) З клавіатури вводиться одновимірний масив n цілих чисел.
B) Заповнити масив n цілих чисел значеннями за допомогою генератора
псевдовипадкових чисел з відрізка [-100; 100].

16. Визначити 1) кількість додатних елементів масиву; 2) добуток елементів


масиву, розташованих до мінімального за модулем елемента.
A)

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>

int s = 0;
int size = 0;
int num = 0;
int d=1;

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//

printf("\r\nРозмір масиву = ");


scanf ("%d", &size);

int a[size];

printf("\r\nВведіть масив цілих чисел:\r\n");


do
{
if (s<size)
scanf ("%d", &a[s]);
s++;
}
while (s<size);

int bil0=0;
int i =0;

do
{
if (a[i]>0)
bil0++;
i++;
}
while (i<size);
system("cls");
printf("\r\n1) Кількість додатних елементів масиву = %d\r\n", bil0);

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


{
if (abs(a[i]) <= abs(a[num]))
num = i;
}

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


d = d * a[i];

printf("\r\n2) Добуток елементів масиву, \r\n розташованих до мінімального\


r\n за модулем елемента:%d\r\n", d);

// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}
B)

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>
#include <time.h>
const int Low=-100, High=100;

int size = 0;
int num = 0;
int d = 1;

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//

printf("\r\nРозмір масиву = ");


scanf ("%d", &size);

int a[size];
int i =0;
srand(time(0));
for (int i=0; i<size; i++)
a[i]=Low + rand() % (High - Low + 1);

int bil0=0;

do
{
if (a[i]>0)
bil0++;
i++;
}
while (i<size);
system("cls");
printf("\r\n1) Кількість додатних елементів масиву = %d\r\n", bil0);
for (i=1; i < size; i++)
{
if (abs(a[i]) <= abs(a[num]))
num = i;
}

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


d = d * a[i];
printf("\r\n2) Добуток елементів масиву, \r\n розташованих до мінімального\
r\n за модулем елемента:%d\r\n", d);

// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}

Завдання 3. Створити програми для роз’язування задач згідно свого


варіанта. Значення елементів масиву задавати з клавіатури.

16. Дано цілочислову матрицю А розмірності nxm. Знайти добуток


мінімальних елементів її стовпців

( )
3 2 4 9
Вхідні дані: n = 3; m = 4; A= 7 3 10 3
5 4 6 1

Вихідні дані: Добуток мінімальних елементів = 24.


#include <stdio.h>
#include <conio.h>
#include <windows.h>

int i = 0;
int j = 0;
int num = 0;
int n = 0;
int m = 0;

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//
printf("\r\nВведіть: ");
printf("\r\nКількість рядків: ");
scanf("%d", &n);
printf("Кількість стовпців: ");
scanf("%d", &m);
printf("\r\n");

int n = 3;
int m = 4;
int a[n][m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) {
printf("A[%d][%d]=", i, j);
scanf("%d", &a[i][j]); }

int d[m];
int i,j=0;

for(j=0;j<m;j++)
{
d[j]=1; for(i=0;i<n;i++)
if(a[i][j]!=0)

d[j]*=a[i][j];
}
///////////////

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


if (d[i] < d[num])
num = i;
}
printf("\r\nДобуток мінімальних елементів = %d\r\n",d[num]);
// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}

Завдання 4. Створити програми для роз’язування задач згідно свого


варіанта. Згенерувати одновимірні та двохвимірні масиви з допомогою
генератора псевдовипадкових чисел rand() відрізка [-100; 100].

16. Ввести прямокутну матрицю дійсних чисел. Вiдсортувати кожен


стовпчик по спаданню значень елементiв.
#include <stdio.h>
#include <conio.h>
#include <windows.h>
const int Low=-100, High=100;

int i = 0;
int j = 0;
int num = 0;
int n = 0;
int m = 0;
int temp = 0;

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//
printf("\r\nВведіть: ");
printf("\r\nКількість рядків: ");
scanf ("%d", &n);
printf("Кількість стовпців: ");
scanf ("%d", &m);

int a[n][m];

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


{
for (j=0; j<m; j++)
{
a[i][j]=Low + rand() % (High - Low + 1);
}
}

printf("\r\n\nДо сортування:\r\n");

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


{
for (int j = 0; j < m; j++)
printf("a[%d][%d]=%d\t", i, j, a[i][j]); printf("\n");
}

////////////
for (int q=0; q<n; q++)
{
for (int j = 0; j < m; j++)
{
for (int i = 1; i < n; i++)
{
if (a[i-1][j] < a[i][j])
{
temp = a[i-1][j];
a[i-1][j] = a[i][j];
a[i][j] = temp;
}
}
}
}
////////////
printf("\r\n\nПісля сортування:\r\n");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
printf("a[%d][%d]=%d\t", i, j, a[i][j]); printf("\n");
}

// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}
GitHub: https://github.com/Aves2001/GitHub_Lab_5_Lebid_Eduard

Висновок: виконуючи лабораторну роботу №5 я здобув навички створення,


відлагодження та реалізації програм для обробки даних з одновимірних і
двовимірних масивів мовою C.

You might also like