Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
19.04.2015
Размер:
54.78 Кб
Скачать

Тема: Одно та двовимірні масиви

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

Завдання 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

  1. Знайти кількість від’ємних елементів масиву Х і сформувати новий масив з додатних елементів вихідного масиву.

  2. Сформувати новий масив Y, i-й елемент якого дорівнює різниці i-го елементу вихідного масиву Х і середнього арифметичного всіх його елементів, тобто yi=xi-c, де

  3. Сформувати масив Z з елементів вихідного масиву X, що перевищують задану величину P. Визначити найбільший елемент масиву Z.

  4. Підрахувати кількість від’ємних елементів вихідного масиву X. Сформувати з цих елементів новий масив Z і визначити номер найменшого елемента масиву Z.

  5. Сформувати масив Y з елементів вихідного масиву X, що перевершують по абсолютному значенню задану величину A і знайти їх максимальне відхилення.

  6. Знайти середнє арифметичне від’ємних елементів вихідного масиву X, сформувати з негативних елементів xi масив Y і знайти його найменший елемент.

  7. Сформувати масив Z з додатних елементів масивів X і Y. Визначити найбільший елемент масиву Z.

  8. Сформувати новий масив Y, створений з вихідного масиву X циклічним зміщенням управо (де y1=xn, yi=xi-1, i=2, 3, …, n) і визначити номер найменшого елемента масиву Y.

  9. Сформувати масив Y з додатних елементів масиву X, і масив Z з від’ємних елементів. Визначити найбільше значення масиву Y і найменше масиву Z.

  10. Знайти добуток відмінних від нуля елементів масиву X з непарними номерами і сформувати з них масив Z.

  11. Сформувати масив Y з вихідного масиву X шляхом заміни від’ємних елементів нулями. Визначити їх кількість і найбільший елемент масиву Y.

  12. Визначити найбільший елемент вихідного масиву X і сформувати новий масив Y, i-й елемент якого дорівнює різниці i-го елементу вихідного масиву X і отриманого найбільшого елементу.

  13. Задані масиви X(x1, x2, …, xn) і Y(y1, y2, …, yn). Сформувати масив Z, кожен елемент якого , де yi≠0. Визначити суму від’ємних елементів масиву Z.

  14. Дано масив 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

  1. Дано квадратну матрицю. Знайти суму елементів, що знаходяться вище від головної діагоналі.

  2. Заданий двовимірний масив a[4*4]. Обчислити добуток максимальних елементів кожного рядка.

  3. Дано дві матриці a[3*4], b[4*3]. Знайти матрицю c=a+bt,

де bt – транспонована матриця b.

  1. Сформувати вектор f [4], кожен елемент якого є сумою додатних елементів відповідного рядка двовимірного масиву s[4*5].

  2. Читаючи квадратну матрицю s[5*5] стовпчиками, замінити кожен елемент, що дорівнює нулю, максимальним елементом цього стовпчика.

  3. Сформувати вектор d з найбільших негативних елементів відповідних стовпчиків матриці s[3*5].

  4. Знайти номери всіх стовпчиків матриці a[4*6], що містять хоча б два елементи, що дорівнюють нулю.

  5. У даному двовимірному масиві p[3*5] відсортувати за спаданням елементи кожного рядка.

  6. Знайти визначник матриці p[3*3] за допомогою розкладання за елементами будь-якого рядка або стовпчика.

  7. Перевірити, чи є задана матриця розміром 4x4 “магічним квадратом”, тобто суми в кожному стовпчику, рядку і кожній діагоналі однакові між собою.

  8. В заданій квадратній матриці цілих чисел замінити цифрою 3 всі елементи, що діляться на неї.

  9. Дані число k (1 < k < 11) і матриця розміром 4 x 10. Знайти суму і добуток елементів k-го стовпця даної матриці.

  10. Дано матрицю розміром 5 x 10. Знайти мінімальне значення в кожному рядку.

Завдання 3

  1. Сформувати вектор з найменших значень елементів стовпців.

  2. Сформувати вектор з найбільших значень елементів рядків.

  3. Знайти суму елементів рядка, в якій розташований найменший елемент.

  4. Знайти суму елементів рядка, в якому розташований найбільший елемент.

  5. Знайти суму елементів стовпця, в якому розташований найменший елемент.

  6. Знайти суму елементів стовпця, в якому розташований найбільший елемент.

  7. Задано квадратна матриця А розміром N х N (N <= 10), що складається з дійсних елементів.

  8. Знайти середнє арифметичне елементів кожного з рядків цієї матриці.

  9. Знайти добуток всіх її позитивних елементів.

  10. Знайти найбільші елементи кожного рядка матриці.

  11. Знайти найменші елементи кожного стовпця матриці.

  12. Знайти, скільки позитивних елементів містить дана матриця в кожному рядку.

  13. Знайти, скільки позитивних елементів містить дана матриця в кожному стовпці.

  14. Отримати нову матрицю шляхом ділення всіх елементів даної матриці на її найбільший за модулем елемент.

Соседние файлы в папке повторение