Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОД_ЛАБ.doc
Скачиваний:
4
Добавлен:
14.11.2019
Размер:
1.04 Mб
Скачать

Двовимірні масиви

Двовимірний масив це масив одновимірних масивів. (мова Сі допускає багатомірні масиви).

Приклад:

#include <stdio.h>

#include <string.h>

main()

{

char text[5][20];

strcpy (text[0], “Turbo Basic”);

strcpy (text[1], “Turbo Pascal”);

strcpy (text[2], “Borland C++”);

strcpy (text[3], “Turbo Prolog”);

strcpy (text[4], “Paradox”);

}

тут ми заповнили масив text[][].

Ініціалізація масивів.

Одновимірні: float mas[6] = {1.1,2.2,3.3,4.0,5,6};

Двохвимірні: int a[3][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; (Один із способів)

або int a [3][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};

Якщо цифр менше ніж 3*5, то решта елементів масиву не визначені.

Можна ініціалізувати масив без вказання його розміру.

Char mas[] = “масив без оголошення розміру”.

Компілятор сам підрахує необхідну кількість елементів масиву. Таким способом можна оголошувати масиви будь-якого типу, і багатовимірні масиви. (Для багатовимірних розмір не вказується тільки в лівих дужках)

Int mas [ ] = { 1,2,3,4,1,2,3 } ;

Int arr [ ] [3] = { 1,2,3,

5,6,7,

8,9,0 };

Масиви вказівників

Вказівники, як і змінні інших типів, можна об’єднувати в масиви. Оголошення масиву вказівників на 10 цілих чисел має вигляд

Int *x [10];

Кожному з елементів цього масиву можна присвоїти адресу ; наприклад

X[2] = &y; ( адреса змінної у ).

Щоб знайти значення змінної у, треба записати *x[2].

Масиви вказівників зручно використовувати для обробки масивів рядків.

Приклад : програма, яка друкує назву місяця у відповідності до введеного номера, або друкує повідомлення про помилку.

/* Приклад ініціалізації масиву вказівників*/

#include<stdio.h>

main ( )

{ int n;

char *name[ ] {

“ неправильний номер місяця”,

“ січень”,

“ лютий”,

“ березень”,

“ квітень”,

“ травень”,

“ червень”,

“ липень”,

“ серпень”,

“ вересень”,

“ жовтень”,

“ листопад”,

“ грудень”,};

puts (“ Введи номер місяця”);

scanf (“ %d”,&n);

printf (“ назва місяця -%s”,(n < 1|| n>12 )? Name[0] : name[n]);

}

Введи номер місяця

8

назва місяця – серпень

Робота з одновимірними масивами

Завдання 1. Скласти програму і розв’язати задачу згідно варіанту. Вхідні дані підібрати самостійно з метою перевірки правильності розробленого алгоритму.

  1. Дано координати точок Якщо точка попадає в площину, обмежену колом , то вивести на друк координати цієї точки і повідомлення “ТОЧКА В ПЛОЩИНІ”; Якщо точка за межами кола, то вивести на друк координати точок і повідомлення “ТОЧКА ЗА МЕЖАМИ”. .

  2. Дано цілочисловий одновимірний масив, який складається з 16 елементів. Знайти парні елементи масиву, які більші числа А і їх кількість. Число А ввести з клавіатури.

  1. Дано одновимірний масив Р, який складається з 16 елементів. Знайти номери тих елементів, модуль яких дорівнює заданому числу А. Число А ввести з клавіатури.

  2. Дано цілочисловий одновимірний масив Т, який складається з 25 елементів. Сформувати два масиви: перший, який складається з додатніх елементів масиву Т, другий – з від’ємних.

  3. Дано одновимірний масив Р, який складається з 30 елементів. Знайти мінімальний елемент і його порядковий номер. Знайти числа, які знаходяться перед мінімальним елементом, поділити на нього. Вивести на друк заданий і новоутворений масиви.

  4. Дано одновимірний масив Р, який складається з 32 елементів. Обчислити значення функції для від’ємних елементів масиву і підрахувати їх кількість.

  1. Обчислити елементи масиву Т, який складається з 8 елементів:

  1. Дано одновимірний масив Х, який складається з 15 елементів. Визначити півсуму найбільшого і найменшого елементів масиву.

  2. Дано одновимірний масив С, який складається з 16 елементів, поміняти місцями максимальний і мінімальний елементи.

  3. Дано одновимірний масив В, який складається з 12 елементів. Сформувати вектор С, що повинен складатися з елементів вектора В, які знаходяться перед максимальним елементом. Вивести на друк вектори В і С.

  4. Дано цілочисловий одновимірний масив С, який складається з 15 елементів. Знайти максимальний елемент і його порядковий номер. Всі непарні числа, які знаходяться за максимальним елементом, звести до квадрата. Вивести на друк заданий і новоутворений масиви.

  5. Обчислити значення перших 15 елементів геометричної прогресії, коли відомий перший елемент і її знаменник . Наступний елемент геометричної прогресії утворюється множенням попереднього на знаменник прогресії.

Примітка: для розміщення в пам’яті обчислених елементів прогресії їх слід оголосити як масив.

  1. Дано одновимірний маисв С, який складається з 12 елементів. Вилучити з масиву -й елемент масиву ( ).

  2. Дано послідовність цілих чисел . Відомо, що в ній є два однакові числа. Вивести на друк порядкові номери цих двох однакових чисел і значення цього числа.

  3. Дано цілочисловий масив А, який складається з 12 елементів. Створити масив С, який складається з непарних чисел масиву А, полічити кількість елементів масиву С. Вивести на друк заданий і новоутворений масиви.

  4. Обчислити суму всіх елементів масива.

  5. Обчислити суму елементів масиву, що мають парні індекси.

  6. Обчислити суму елементів масиву, що мають непарні індекси, починаючи з кінця.

  7. Обчислити добуток парних елементів масиву, що передують першому від’ємному елементу масиву.

  8. Обчислити суму елементів масиву, що є кратними 4 і які стоять після першого нульового елемента.

  9. Визначити кількість нульових, від’ємних та додатніх елементів масиву.

  10. Визначити індекс першого та останнього нульового елемента масиву.

  11. Визначити індекси всіх нульових елементів масиву.

  12. Визначити максимальній елемент масиву та його індекс.

  13. Визначити мінімальний елемент масиву та його індекс.

  14. Визначити номер першого максимального (мінімального) елемента.

  15. Визначити кількість мінімальніх елементів масиву.

  16. Визначити кількість максимальних елементів масиву.

  17. Всі максимальні елементи масиву замінити на 99, а мінімальні -на 0.

  18. Обміняти місцями перший та максимальній елемент.

  19. Обміняти місцями останній та мінімальний елемент.

  20. Обміняти місцями попарно всі елементи масиву.

  21. Зсунути всі елементи масиву на 1 вліво.

  22. Зсунути всі елементи масиву на 1 вправо.

  23. Зсунути всі елементи масиву на 2 вправо.

  24. Відсортувати масив по зростанню, з використанням мінімального елемента.

  25. Відсортувати масив по зростанню, з використанням максимального елемента.

  26. Відсортувати масив з використанням метода кульки.

Робота з двовимірними масивами

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

  1. Дано матрицю А розміром 45. Визначити кількість елементів в кожному рядку матриці А, модуль яких дорівнює порядковому номеру елемента в рядку. На друк вивести кількість таких елементів для кожного рядка.

  2. Дано матриці А.і В розміром 66 кожна. Знайти елемент матриці С як півсуму відповідних елементів матриць А.і В.

  3. Знайти елементи в кожному стовпці матриці С розміром 77, які більші числа А і менші числа С. визначити кількість таких елементів. Числа А=-2 і С=3,5 ввести з клавіатури.

  4. Обчислити

Аргумент змінюється від початкового значення 5,2 до кінцевого значення 8,3 з кроком 0,75. Вектор В складається з 8 елементів (додатні дійсні числа).

  1. Дано матрицю Е розміром 46. Сформувати матрицю Q, значення елементів кожного стовпця якої обчислюється як різниця значень відповідних елементів двох суміжних стовпців матриці Е.

  2. Дано матрицю С розміром 65. Поділити елементи кожного стовпця на останній елемент стовпця. Перетворену матрицю надрукувати.

  3. Дано матрицю А розміром 67. Для кожного рядка матриці обчислити суму елементів, значення яких перевищує задане число С. С=18,6.

  4. Дано матрицю А розміром 66. Замінити в матриці елементи головної діагоналі нулями.

  5. Дано матрицю С розміром nn. Знайти і надрукувати індекси тих елементів матриці С, для яких , а також підрахувати кількість таких елементів.

  6. Дано матрицю А розміром 82. Поділити кожен елемент стовпця на елемент цього стовпця, який знаходиться на головній діагоналі, якщо цей елемент не дорівнює нулю.

  7. Масив С дійсних чисел має 5 рядків і 11 стовпців. Присвоїти значення найменшого елемента масиву змінній М1, номер рядка, де знаходиться цей елемент, - змінній Т, номер стовпця – змінній А.

  1. Дано двовимірний масив Т розміром 67. Знайти та надрукувати максимальний і мінімальний елементи кожного стовпця.

  1. Для кожного рядка заданої матриці А розміром 85 знайти та надрукувати номери стовпців, які містять ненульові елементи, та їх кількість.

  1. Дано матрицю В розміром 56. Поділити елементи кожного рядка на елемент, який знаходиться в третьому стовпці цього рядка.

  1. Дано квадратну матрицю А 6-го порядку. Знайти суму елементів матриці, які розміщені в рядках з від’ємним елементом на головній діагоналі. Обчислити кількість таких рядків.

16. Сформувати з матриці А[10,10] матрицю B[10,10] за такими правилами:

а) елементи матриць приймають значення тільки 0 або 1;

б)сусідамим елемента рахувати всі елементи, що розміщені поряд з ним по горизонталі, діагоналі, вертикалі;

в) якщо сума S значень сусідів елемента менша 2 або >3 ,то =0;

г) якщо S дорівнює Z, то ;

д) якщо S дорівнює 3, то ;

17. Для вступу в університет абітурієнти здають 4 екзамени. До наступного екзамену не допускаються абітурієнти, що здали екзамен на "2". Вивести кінцеву таблицю оцінок для кожного абітурієнта, в якій вказати середній бал лише для абітурієнтів, що не отримали "2"; вказати абітурієнтів, що не допущені до екзамену.

18. Скласти таблицю результатів першості по футболу для 10 команд. задана рахунок як кількість забитих і пропущених очків для кожної гри. скласти результуючу таблицю очків(програш-0; нічия-1; виграш-2). визначити суму очків для кожної команди і відповідно розподіл команди по місцям. якщо сума очків для двох команд одинакова, то порівняти різницю забитих і пропущених очків.

  1. Відомо, що в Івано-Франківську найтеплішим є дні з 15 червня по 15 липня. для провелення фестивалю були вибрані 7 днів підряд, найбільш теплих і без опадів за останні 10 років. скласти програма для виконання даної задачі.

області 10 районів. відомо розмір (га) площ що засіяні вівсом і врожай зібраний з них (центнерах). Визначити:

а) середню врожайність (остача від ділення врожаю на площу) по кожному районі;

б) середня врожайність в загальному по області;

в) вказати назви районів, в яких врожайність менша за середню.

  1. В області 10 районів. відомо розмір (га) площ що засіяні пшеницею і середню врожайність (ц/га) по кожному району. Визначити :

а) кількість пшениці зібрану по області

б)середню врожайність по області;

в)вказати назви районів, в яких врожайність пшениці найбільша.

  1. Визначити, чи являється задана цілочисельна квадратна матриця 9-го порядку магічним квадратом (суми елементів по всіх рядках і стовпцях). задану матрицю вивести в натуральному вигляді.

  2. Задати цілочисельний масив D[8,12]. Визначити кількість "особливих" елементів згідно ознак:

а) він більший від суми інших елементів свого стовпця;

б) в його рядку зліва знаходяться елементи менші від нього, а справа - більші.

Вивести вхідну матрицю в натуральному вигляді. Значення і загальну кількість "особливих" елементів.

  1. Задана квадратна матриця. Переставити рядок із заданим номером. Вивести обидві матриці.

  2. Матриця, симетрична відносно головної діагоналі, задана верхнім трикутником у вигляді одновимірного масиву по рядкам. відновити початкову квадратну матрицю і вивести її.

  3. Задати масив B[n,n]. Сформувати два одновимірних масиви. Перший утворити рядками верхнього трикутника матриці, включаючи елементи головної діагоналі, другий- рядками нижнього трикутника.

  4. Задати масив A[n,n] і числа k i l( ). Iз рядка l-го відняти k-й рядок, помножений на . Вивести обидва масиви.

  5. Задати масив n*n і k n число. Розділити елементи k-рядка на діагональний елемент, розміщений в цьому рядку. Вивести обидві матриці.

28. Визначити сідловий елемент (одночасно максимальний у рядку і мінімальний у стовпці) масиву c[5,5]

a=0.5

Вивести утворений масив і результат задачі.

  1. У таблиці D[3,4] визначити рядок з максимальним елементом і поміняти його з першим рядком, якщо в ньому немає максимального елемента.

a=5

Вивести обидві матриці.

  1. Задати матрицю D квадратною і здійснити її транспортування (поміняти стовпці та рядки місцями). Вивести обидві матриці.

  2. Від'ємні елементи таблиці А[6,6] замінити нулями. Визначити кількість додатніх елементів.

x=[-П;П];

Двовимірний масив елементів утворити із одновимірного, заданого згідно формули і умови. Вивести масив А[6,6] і результат задачі.

  1. Поміняти місцями другий рядок з третім у таблиці В[5, 5]

x=[0;2П]

Вивести обидва масиви. Примітка: Початковий масив елементів утворити із одновимірного, що заданий згідно формули і умови.

  1. Обчислити суму матриць C[3, 3], B[3, 3]

;

Вивести утворений і результуючий масиви.

  1. Обчислити середгьо-арифметичне матриці D[4, 5]

Вивести створений масив і результат обчислень.

  1. Визначити кількість додатніх елементів масиву А[3, 5]

b=4

Вивести створений масив і результат

  1. Обчислити добуток елементів, більших 0. 5 у матриці C[4, 5]

с=0. 7

Вивести створений масив і результат обчислення.

  1. Обчислити суму значень усіх елементів масиву Д[3, 4]

с=7

Вивести створений масив і результат обчислення.

  1. Поміняти перший і останній стовбець матриці А[5, 5]

Вивести обидві матриці.

  1. Визначити суму квадратів елементів таблиці D[5, 5]

Вивести масив і значення суми.

Контрольні запитання.

  1. Як оголошується двовимірний масив?

  2. Яким способом можна записати значення індексів елементів?

  3. Який порядок зміни індексів елементів двовимірних масивів?

  4. Які способи введення елементів двовимірного масиву ви знаєте?

  5. В чому різниця між перебором елементів двовимірного масиву по рядках і стовпцях?

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

Дано матрицю В розміром 34. Обчислити добуток ненульових елементів кожного стовпця матриці. Результат обчислення ввести у вигляді одновимірного масиву.

Блок-схема алгоритму.

Програма мовою Pascal

program lab_M;

var i,j: integer;

d: array [1..4] of real;

b: array [1..3, 1..4] of real;

begin

writeln (введіть матрицю);

for i:=1 to 3 do

for j:=1 to 4 do

begin

write (‘b[’,i,‘,’,j,‘]=’);

read (b[i,j])

end;

for j:=1 to 4 dо

begin

d [j]:=1;

for i:=1 to 3 do

if b [i,j]< >0

then d [j]:=d [j]*b [i,j];

writeln (‘d [’,j,‘]=’,d [j]:12)

end

end.

Програма мовою C

#include <stdio.h>

main()

{

int i,j;

float d[4],b[3][4];

printf(“Введіть матрицю\n”);

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

for(j=0;j<4;j++)

{

printf(“b[%d,%d]=”,i,j);

scanf(“%f”,&b[i][j]);

}

for(j=0;j<4;j++)

{

d[j]=1;

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

if (b[i][j] !=0) d[j]*=b[i][j];

printf(“d[%d]=%f\n”,j,d[j]);

}

}