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

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
УІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Інформатика та обчислювальна техніка
Варіант:
5

Частина тексту файла (без зображень, графіків і формул):

Лабораторна робота 11 Тема : «Робота з багатовимірними масивами в мові С» Мета: ознайомлення з поняттям складеного типу даних – масивом та набуття навичок практичної роботи з багатовимірними масивами. Теоретичні відомості В мові С/С++ можливо працювати зі складеними структурами даних – масивами. Розрізняють одновимірні та багатовимірні масиви. Частковим випадком багатовимірних масивів є двовимірні масиви. Обмежень на розмірність масивів, тобто на число індексів, в мові С теоретично немає. Стандарт мови С вимагає, щоб транслятор міг обробляти визначення масивів з розмірністю до 31. Проте частіше всього використовуються одновимірні і двовимірні масиви. Суттєво, що всі елементи матриць або дійсні, або цілі і т.д. Така "однорідність" елементів властива масиву, визначення якого описує тип елементів, ім'я масиву і його розмірність, тобто число індексів, необхідне для визначення конкретного елемента. Крім того, у визначенні вказується кількість значень, яка приймаються кожним індексом. Наприклад, int а[10]; - визначає масив з 10 елементів а[0], а[1] ..., а[9]; float Z[13][[6]; - визначає двовимірний масив, перший індекс якого приймає 13 значень від 0 до 12, другий індекс приймає 6 значень від 0 до 5. Таким чином, елементи двовимірного масиву Z можна перерахувати так: Z[0][0], Z[0][l], Z[0][2],...,Z[12][5] Двовимірний масив – це масив, що складається з окремих одновимірних масивів у вигляді рядків, розмірність яких рівна кількості стовпців матриці. Для цього при визначенні двовимірного масиву у квадратних дужках вказується дві розмірності. Оператор опису двовимірного масиву має вигляд: <тип> <ім’я> [<розмір1>][<розмір2>]; Наприклад: int a[3][5]; // Цілочисельна матриця з 3 рядків і 5 стовпців Масив зберігається у неперервній області пам’яті по рядках, які зберігаються послідовно один за одним, а не у вигляді звичайної двовимірної матриці: a00 a01 a02 a03 a04 a10 a11 a12 a13 a14 a20 a21 a22 a23 a24 | -0-ий рядок- - |-- 1-ий рядок - |- - 2-ий рядок- - | Для доступу до окремого елемента двовимірного масиву використовується конструкція, яка має вигляд a[i][j], де i – номер рядка, j – номер стовпчика. Кожен індекс може змінюватися від 0 до значення, яке на одиницю менше за значення відповідної розмірності. Як і для одновимірного масиву, при описі двовимірного масиву можна задавати початкові значення його елементів. Їх записують у фігурних дужках. Елементи масиву ініціалізуються в порядку їх розміщення у пам’яті. Наприклад: оператор int с[3][4] = {1,2,34,2,3,4,1,3,4,1,2}; визначає матрицю з наступними значеннями елементів: 1 2 3 4 2 3 4 1 3 4 1 2 Можна задавати початкові значення не для всіх елементів масиву. Для цього список значень для кожного рядка береться додатково у фігурні дужки. Наприклад: int d[3][4] = {{0,1,2},{9,-2},{-7,1,6,8}}; В даному випадку розмірність, що позначає кількість рядків, можна не вказувати. Приклад введення та виведення масиву: #include <vcl.h> #pragma hdrstop //--------------------------------------------------------------------------- #include <stdio.h> #include <conio.h> #define n 2 #define m 3 #include <stdlib.h> #pragma argsused int main(int argc, char* argv[]) { int i,j,x[n][m]; for(i=0;i<n;i++) for(j=0;j<m;j++) x[i][j]=-10+rand()%20; for(i=0;i<n;i++) { printf("\n"); for(j=0;j<m;j++) printf(" %5d",x[i][j]); } getch(); return 0; } Приклад виконання роботи: Завдання. Для кожного рядка матрицi знайти i надрукувати суму значень елементiв, що перевищують число Z. Блок-схема алгоритму:  Програмна реалізація: #include <vcl.h> #pragma hdrstop #include<stdio.h> #include<conio.h> #include<values.h> #define n 3 #define m 4 //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { clrscr(); int i,j; float x[n][m], z,s; for(i=0;i<n;i++) for(j=0;j<m;j++) { printf("\n x[%d,%d]", i, j); scanf("%f", &x[i][j]); } printf("\n z:"); scanf("%f",&z); clrscr(); printf("\n Zadano matrica:"); for(i=0;i<n;i++) { printf("\n"); for(j=0;j<m;j++) printf(" %f",x[i][j]); } printf("\n Rezultat"); for(i=0;i<n;i++){ s=0; for(j=0;j<m;j++) if(x[i][j]>z) s+=x[i][j]; printf("\n\nSuma chisel greater than z=%f v %d-omu ryadru :", z,i,s); } getch(); return 0; } Результати роботи програми: Zadano matrica: 2 4 7 1 3 6 4 7 8 9 4 3 Rezultat Suma chisel greater than 5 v 0-omu ryadru :7 Suma chisel greater than 5 v 1-omu ryadru :13 Suma chisel greater than 5 v 2-omu ryadru :17   Варіанти індивідуальних завдань: 5. В двовимірному масиві підрахувати кількість додатніх елементів.   Програмна реалізація: #include <stdio.h> #include <conio.h> #define n 3 #define m 3 int main() { float k, x[n][m]; int i,j; for(i=0;i<n;i++) for(j=0;j<m;j++) { printf("\n x[%d][%d]", i,j); scanf("%f",&x[i][j]); } k=0; for(i=0;i<n;i++) for(j=0;j<m;j++) if(x[i][j]>0) k++; printf("\n k=%f",k); getch(); return 0; }  Хід виконання роботи: Блок-схема:  Результат роботи програми:  Висновок: в результаті роботи ознайомлено з поняттям складеного типу даних – масивом та набуто навички практичної роботи з багатовимірними масивами.
Антиботан аватар за замовчуванням

19.02.2016 11:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!