2K_programuvanna / повторение / lab0
.docТема: Одно та двовимірні масиви
Мета: Навчитися складати і реалізовувати програми обробки табличних величин.
Завдання 1
Знайти найбільший серед додатних елемент масиву x[10], його номер та сформувати новий масив y з від’ємних елементів заданого масиву.
#include < stdio.h >
void main()
{ int x[10], max, k, y[10], i, n;
puts (“Введіть елементи масиву х\n”);
for (i=0; i<10; i++)
scanf (“%i”, &x[i]);
max=x[0]; k=0;
for (i=0;i<10; i++)
if (x[i]>0 && x[i]>max) { max=x[i]; n=i; }
else if (x[i]<0) { y[k]=x[i]; k++; }
printf (“max=%i ,його номер n=%i\n”, max, n);
printf (“Масив y з від’ємних елементів\n”);
for (i=0; i<k-1; i++)
printf (“ %i ”,y[i]);
}
Завдання:
Скласти програму обробки одновимірного масиву. Значення виводити у форматі 4:2
-
Знайти кількість від’ємних елементів масиву Х і сформувати новий масив з додатних елементів вихідного масиву.
-
Сформувати новий масив Y, i-й елемент якого дорівнює різниці i-го елементу вихідного масиву Х і середнього арифметичного всіх його елементів, тобто yi=xi-c, де
-
Сформувати масив Z з елементів вихідного масиву X, що перевищують задану величину P. Визначити найбільший елемент масиву Z.
-
Підрахувати кількість від’ємних елементів вихідного масиву X. Сформувати з цих елементів новий масив Z і визначити номер найменшого елемента масиву Z.
-
Сформувати масив Y з елементів вихідного масиву X, що перевершують по абсолютному значенню задану величину A і знайти їх максимальне відхилення.
-
Знайти середнє арифметичне від’ємних елементів вихідного масиву X, сформувати з негативних елементів xi масив Y і знайти його найменший елемент.
-
Сформувати масив Z з додатних елементів масивів X і Y. Визначити найбільший елемент масиву Z.
-
Сформувати новий масив Y, створений з вихідного масиву X циклічним зміщенням управо (де y1=xn, yi=xi-1, i=2, 3, …, n) і визначити номер найменшого елемента масиву Y.
-
Сформувати масив Y з додатних елементів масиву X, і масив Z з від’ємних елементів. Визначити найбільше значення масиву Y і найменше масиву Z.
-
Знайти добуток відмінних від нуля елементів масиву X з непарними номерами і сформувати з них масив Z.
-
Сформувати масив Y з вихідного масиву X шляхом заміни від’ємних елементів нулями. Визначити їх кількість і найбільший елемент масиву Y.
-
Визначити найбільший елемент вихідного масиву X і сформувати новий масив Y, i-й елемент якого дорівнює різниці i-го елементу вихідного масиву X і отриманого найбільшого елементу.
-
Задані масиви X(x1, x2, …, xn) і Y(y1, y2, …, yn). Сформувати масив Z, кожен елемент якого , де yi≠0. Визначити суму від’ємних елементів масиву Z.
-
Дано масив X, що складається з n елементів. Сформувати масив Z з елементів масиву X, значення яких належать відрізку [-5; 20]. Визначити їх кількість і суму.
Двовимірні масиви. Обробка матриць.
Масив - це група елементів одного типу (double, float, int, char і т.д.), доступ до яких здійснюється за індексом в масиві. Масив можна описати наступним чином:
static int m [10], n[5] ;
Тут описані два масиви цілого типу класу зберігання static. У масиві
int m [10] 10 елементів: m [0], m [1], ..., m [9].
За цим масивом компілятор розміщує елементи n [0], n [1], n [2], n [3], n [4] масиву
int n [5].
Слід звернути увагу, що всі масиви індексу, починаючи з нуля., А в [] стоїть кількість елементів, включаючи нульовий.
При описі багатовимірних масивів після імені масиву ставиться відповідну кількість квадратних дужок, а в них наводиться число елементів по даному вимірюванню масиву. Приклад: float x [5], a [2] [4], z [2] [2] [5]; Тут описані: одновимірний масив з елементів x [0], ..., x [4]; двовимірний масив а з двох рядків і чотирьох стовпців:
Описано також тривимірний масив z. Ім'я масиву є адресою його самого першого (нульового) елемента. Наприклад, для матриці - це адреса елемента a [0] [0]. В оперативній пам'яті елементи багатовимірних масивів розміщуються так, що самий правий індекс змінюється раніше за інших. Так, елементи матриці а розміщуються в такій послідовності: a [0] [0], a [0] [1], a [0] [2], a [0] [3], a [1] [0], a [1] [1], a [1] [2], a [1] [3]. Слід звернути увагу, що за умов згадування конкретного елемента масиву після імені масиву наводиться відповідне розмірності кількість пар квадратних дужок, а в них - конкретні значення індексів. При описі масивів їх можна ініціалізувати. Наприклад,
float x [5] = (0.5, -1.2, 0, 0, -4); float a [2] [3] = (1, 2, 3, 4, 5, 6);
При ініціалізації масиву х [] кількість елементів в [] можна не писати. Компілятор визначить це за кількістю чисел до (). Те ж саме і при описі масиву a [] [] можна було б не писати кількість рядків. Тобто написати float a [] [3] = (. . .); Одним словом, при ініціалізації багатовимірних масивів кількість елементів по самому лівому індексу можна не вказувати. Якщо при ініціалізації масиву значення якого-небудь елемента невідомо, то замість нього обов'язково повинна стояти кома. Інакше компілятору не буде відомо про існування такого елемента і про необхідність виділити під нього пам'ять. Наприклад, double b [2] [4] = (1, 2, 3, 4, 5, 6, 7, 8); Тут значення b [1] [1] невідомо (пропущено), але кома після нього перед b [1] [2] = 7 свідчить про те, що він існує і під нього необхідно виділити місце в ОЗП.
Приклад Для матриці а[3][4] обчислити суму елементів менших ніж 5 для кожного стовпчика.
#include <stdio.h>
#include <conio.h>
void main()
{ int i, j,m,n;
float a[3][4], s;
clrscr();
// введення розміру масиву
printf("m,n=");
scanf(" %d%d",&m,&n);
// введення масиву
printf("vvod a \n");
for (i=0; i<m; i++)
for (j=0; j<n; j++)
scanf ("%f", &a[i][j]);
for (j=0; j<n; j++)
{
s=0;
for (i=0; i<m; i++)
if (a[i][j]<5) s=s+ a[i][j] ;
printf("s=%8.2f j=%d\n", s, j+1);
}
}
Приклад:
Для матриці а[3][4] сформувати масив із добутків елементів рядків більших ніж задане d.
#include <stdio.h>
#include <conio.h>
void main()
{ int i, j,m,n;
float a[3][4], p[3],d=4;
clrscr();
printf("m,n=");
scanf(" %d%d",&m,&n);
printf("vvod a\n");
for (i=0; i<m; i++)
for (j=0; j<n; j++)
scanf ("%f", &a[i][j]);
for (i=0; i<m; i++)
{
p[i]=1;
for (j=0; j<n; j++)
if (a[i][j]>d) p[i]=p[i]* a[i][j] ;
}
for (i=0; i<m; i++)
printf("p=%8.2f i=%d\n", p[i], i+1);
}
Завдання 2
-
Дано квадратну матрицю. Знайти суму елементів, що знаходяться вище від головної діагоналі.
-
Заданий двовимірний масив a[4*4]. Обчислити добуток максимальних елементів кожного рядка.
-
Дано дві матриці a[3*4], b[4*3]. Знайти матрицю c=a+bt,
де bt – транспонована матриця b.
-
Сформувати вектор f [4], кожен елемент якого є сумою додатних елементів відповідного рядка двовимірного масиву s[4*5].
-
Читаючи квадратну матрицю s[5*5] стовпчиками, замінити кожен елемент, що дорівнює нулю, максимальним елементом цього стовпчика.
-
Сформувати вектор d з найбільших негативних елементів відповідних стовпчиків матриці s[3*5].
-
Знайти номери всіх стовпчиків матриці a[4*6], що містять хоча б два елементи, що дорівнюють нулю.
-
У даному двовимірному масиві p[3*5] відсортувати за спаданням елементи кожного рядка.
-
Знайти визначник матриці p[3*3] за допомогою розкладання за елементами будь-якого рядка або стовпчика.
-
Перевірити, чи є задана матриця розміром 4x4 “магічним квадратом”, тобто суми в кожному стовпчику, рядку і кожній діагоналі однакові між собою.
-
В заданій квадратній матриці цілих чисел замінити цифрою 3 всі елементи, що діляться на неї.
-
Дані число k (1 < k < 11) і матриця розміром 4 x 10. Знайти суму і добуток елементів k-го стовпця даної матриці.
-
Дано матрицю розміром 5 x 10. Знайти мінімальне значення в кожному рядку.
Завдання 3
-
Сформувати вектор з найменших значень елементів стовпців.
-
Сформувати вектор з найбільших значень елементів рядків.
-
Знайти суму елементів рядка, в якій розташований найменший елемент.
-
Знайти суму елементів рядка, в якому розташований найбільший елемент.
-
Знайти суму елементів стовпця, в якому розташований найменший елемент.
-
Знайти суму елементів стовпця, в якому розташований найбільший елемент.
-
Задано квадратна матриця А розміром N х N (N <= 10), що складається з дійсних елементів.
-
Знайти середнє арифметичне елементів кожного з рядків цієї матриці.
-
Знайти добуток всіх її позитивних елементів.
-
Знайти найбільші елементи кожного рядка матриці.
-
Знайти найменші елементи кожного стовпця матриці.
-
Знайти, скільки позитивних елементів містить дана матриця в кожному рядку.
-
Знайти, скільки позитивних елементів містить дана матриця в кожному стовпці.
-
Отримати нову матрицю шляхом ділення всіх елементів даної матриці на її найбільший за модулем елемент.