Читайте также: |
|
Тема: Складання програм для опрацювання двовимірних масивів. Дії над матрицями
Мета: Навчитись описувати, формувати і опрацьовувати двовимірні масиви даних в С-програмах; оволодіти основними способами їх від лагодження.
1 Короткі теоретичні відомості
Масиви. Масив - це група пронумерованих(проіндексованих) однотипних елементів даних під одним загальним іменем. Розрізняють окремі елементи масиву по індексу – числу, яке стоїть після імені масиву в квадратних душках. Масиви необхідно описувати. Опис включає тип елементів масиву і розмір.
Приклад:
Int data[100]; /* масив типу цілий з іменем data і розміром 100.
Звернення до окремих елементів масиву проводиться по індексу від 0 до 99. Першим елементом є data[0]; а не data[1].
Елемент масиву так само використовується, як проста змінна, і індексом може бути вираз або змінна.
Одномірні масиви. Одномірний масив має один індекс.. Індекс – це номер в квадратних душках після імені масиву.
При описі масиву компілятор виділяє для нього блок пам’яті, достатній для зберігання всього масиву разом. Окремі елементи поміщаються в пам’яті послідовно один за одним. Значення має це, де саме знаходиться опис масиву, як і прості змінні.
Індекс масиву може бути як літеральною константою, так і виразом. Слід пам’ятати, що індексація починається з нуля. Відповідно, коли дати елемент останній, компілятор помилку не виявить, але програма буде працювати непередбачено.
Багатомірні масиви. Багатомірні масиви мають зразу декілька індексів, кількість індексів необмежена. Є обмеження на загальний розмір масиву.
Синтаксис
Int b[8][8];
Структура двомірного масиву
00 01 02 07
10 11 12 17
…………….
70 71 72…77
Імена і описи масивів. Ім’я масиву це звичайний ідентифікатор. Він має бути унікальним, за ним іде розмірність. Розмір масиву може бути як літеральна константа, так і символьна.
Наприклад
#define A 12
int array[A];
або
int array[12];
Не всі компілятори підтримують інструкцію, Тому так писати не варто
const int A=12
int array[A];
Рекомендують користуватися символьними константами, тому що легко можна змінити потрібну розмірність.
Задання (ініціалізація масивів).
іnt a[4] = {1, 2, 3, 4}; еквівалентні
іnt a[] = {1, 2, 3, 4]};
Можна задати менше елементів, ніж розмірність масиву, помилки не буде, але робити так не рекомендується. Задання більшого числа елементів, ніж розмірність, дасть помилку.
При багатомірному масиві першим пробігається останній індекс.
Int а[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
а[0][0]=1; а[0][1]=2; а[0][2]=3;
а[1][0]=4; а[1][1]=5; а[1][2]=6;
а[2][0]=7; а[2][1]=8; а[2][2]=9;
а[3][0]=10; а[3][1]=11; а[3][2]=12
Можна це зробити і за рахунок дужок
іnt а[4][3]={ {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12} };
Обов’язково все треба відділяти комами
Масив – це засіб зберігання однотипних даних під одним іменем. При описі його можна задати, але це не обов’язково.
2 Варіанти індивідуальних завдань
№ вар. | Обчислити матрицю | Задані матриці і | |
Кожний елемент двомірного масиву розмірності (5x2) з дійсними елементами, який менший за 25, збільшити на 10. Одержаний масив вивести на екран | |||
Задано двомірний масив розмірності (3x4) з цілими елементами. Кожний елемент, значення якого належить проміжку [25;50], зменшити на 8. Одержаний масив вивести на екран | |||
Задано двомірний масив розмірності 5 3 з дійсними елементами. Елементи, які менші за 5, збільшити в 2 рази. Одержаний масив вивести на екран | |||
Задано двомірний масив розміром (2x4) з цілими елементами. Суму всіх елементів вивести на екран | |||
Задано двомірний масив розмірності (6x2) з цілими елементами. Вивести суму елементів кожного рядка | |||
Задано двомірний масив з цілими елементами, розмірності (5x6). Обчислити суму ненульових елементів. Результат вивести на екран | |||
Задано двомірний масив розмірності (2x10) з дійсними елементами. Знайти суму додатних елементів, яку. вивести на екран | |||
Задано двомірний масив розмірності (4x4)з дійсними елементами. Знайти добуток елементів по рядках. Результат вивести на екран | |||
Задано двомірний масив з цілими елементами, розміром 9x2. Знайти суму елементів, менших від 15. Результат вивести на екран. | |||
Задано двомірний масив розмірності (2x7) з цілими елементами. Знайти добуток всіх елементів, які менші від 4. Результат вивести на екран | |||
Задано двомірний масив розмірності 7x2 з дійсними елементами. Елементи менші за 8, збільшити на 128. Новий масив вивести на екран | |||
Задано двомірний масив розмірності 9x2 з цілими елементами Елементи менші від 0 замінити на 10. Новий масив вивести на екран | |||
Задано двомірний масив розмірності 8x3 з цілими елементами, занулити елементи першого рядка. Результат вивести на екран | |||
Задано двомірний масив розмірності 8x2 з дійсними елементами. Елементи, які менші за 15, збільшити в 2 рази. Вивести новий масив. | |||
Задано двомірний масив розмірності 10x2 з цілими елементами. Кожний елемент масиву, який більший за 19, збільшити на 1. Новий масив вивести на екран |
3 Методичні вказівки
1. Уважно прочитати умову задачі. Визначити, що має бути отримано в результаті її розв'язку, які дані для цього потрібно ввести.
2. Використати оператори циклів, опрацювати відповідні масиви.
3.:Оголошуючи масиви, враховувати задану максимально можливу кількість елементів. Дійсну кількість елементів, які будуть опрацьовуватись при кожній реалізації програми, вводити з клавіатури.
4. Розробити алгоритм розв'язку задачі, дати короткий опис основних кроків алгоритму.
5. Ввести текст програми. Звернути увагу на типи даних, що будуть використані в програмі.
6. Запустити програму на компіляцію. У випадку необхідності виправити синтаксичні і семантичні помилки помилки.
4 Приклад виконання лабораторної роботи
1. Задано двовимірний масив з цілими елементами, розмірності (4x4), кожен елемент, значення якого лежить на відрізку [5;10], зменшити на 7, всі інші елементи збільшити на 7. Новий масив вивести на екран.
Текс програми мовою С
#include <stdio.h>
int i, j:
int A[4][4]={1, 4, 3, 7 -8, 5, 3, 0, 56, 34, -6,45, 45, 12, 0, 46};
int B[4][4];
void main()
{
printf («Programa Lab_4\n»);
for (i=0; i<4; i=i+1)
for (j=0; j<4; j=j+1)
{
if ((A[i][j]>=5) && (A[i][j]<=10)) B[i][j]= A[i][j]-7;
else
B[i][j]= A[i][j]+7;
}
for (i=0; i<4; i=i+1)
{
for (j=0; j<4; j=j+1)
printf(“B[%d][%d]=%d\t”, i, j, B[i][j]);
printf (“\n”);
}
}
2. Задати дві квадратні матриці А і В розміром 3 3 (двовимірні масиви), елементами яких є цілі числа. Обчислити матрицю С за формулою . Матрицю С вивести на екран.
Програма розв'язку
#include<stdio.h>
#include<conio.h>
int A[3][3]={{1,3,1},{3,5,2},{1,4,4}};
int B[3][3]={{-1,3,-1},{-3,5,-2},{-1,4,-3}},C[3][3],i,j;
void main() { clrscr();
for(i=0;i<3;i++) {
for(j=0;j<3;j++) { C[i][j]=B[i][j]-A[i][j]+A[j][i]; printf("%d\t",C[i][j]);}
printf("\n"); }
}
Результат: ь -1 3 -1
-3 5 0
- 1 2 -3
5 Контрольні запитання
1. Що таке двовимірний масив?
2. Яке значення має індекс 1-го елементу двовимірного масиву
3. Які типи даних можна використати для опису масивів?
4. Яке значення має індекс останнього елементу двовимірного масиву, коли він має 5*5 елементів?
5. Написати фрагмент програми для виводу на екран елементів двовимірного масиву розмірністю 9*9;
6. Задати при описі елементи масиву 3*3 з цілими елементами.
Дата добавления: 2015-07-17; просмотров: 142 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Постановка завдання | | | Лабораторна робота № 8 |