Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_1 часть_укр.doc
Скачиваний:
2
Добавлен:
09.11.2019
Размер:
1.41 Mб
Скачать
  1. Постановка задачі.

  2. Варіант завдання.

  3. Код програми.

  4. Скріншот вікна з результатами обчислень і результатами розв'язку конкретного варіанта..

8. Лабораторна робота 7. «Двовимірні масиви й функції» (4 год.)

Ціль роботи: Навчитися визначати й ініціалізувати багатовимірні масиви, освоїти операції над масивами з використанням функцій. Вивчити передачу масиву й елементів масиву у функцію.

8.1. Теоретичні відомості

8.1.1. Обробка багатовимірних масивів

При оголошенні багатовимірного масиву необхідно вказати, що масив має більш ніж один вимір, наприклад,.

int t[2][3];

– оголошення двовимірного масиву з 2 рядків і 3 стовпців. Елементи цього масиву: розташовуються в пам'яті одне за одним.

t[0][0] t[0][1] t[0][2]

t[1][0] t[1][1] t[1][2]

Тобто багатовимірний масив подається як одновимірний масив, кожний з елементів якого, у свою чергу, являє собою масив.

8.1.2. Передача масиву у функцію

Масив у функцію передається через адресу першого елемента масиву. Для цього використовується операція непрямої адресації (*), тобто покажчик на масив. У списку аргументів прототипу й визначення функції ставиться покажчик, а у виклику функції – ім'я масиву. Наведемо приклад визначення й виклику функції enter, яка призначена для введення елементів одновимірного масиву:

#include <stdio.h>

void enter(int []); //Прототип функції

void main(){

int v[5];

enter(v); //Виклик функції

}

void enter(int a[]) { //Визначення функції

for (int i=0; i<5; i++)

scanf("%d", &a[i]);

}

Замість enter(int a[]) в оголошенні функції можна використовувати запис: enter(int *a). При передачі у функцію багатовимірного масиву повинні бути зазначені границі всіх вимірів, крім першого. Наприклад, для двовимірного масиву:

int arr[2][3]={{1,2,3},{4,5,6}}; //Визначення масиву

void display (int a[][3], int n1) { //Визначення функції

for (int i=0; i<n1; i++){

for (int j=0; j<3; j++) cout << a[i][j] << " ";

cout<<endl;

}

}

. . .

display (arr); //Виклик функції

8.1.3. Приклад. Функції введення й виведення елементів матриці

Нехай значення елементів квадратної матриці вводяться за допомогою окремої функції enter. Необхідно замінити всі від’ємні значення елементів їхніми модулями й вивести отриманий масив за допомогою функції display..

#include <stdio.h>

#define num 3

void enter(int [][num], int);

void display(int [][num], int);

void main() {

int arr[num][num];

enter(arr, num);

for (int i=0; i<num; i++)

for (int j=0; j<num; j++)

if (arr[i][j]<0) arr[i][j]= - arr[i][j];

display(arr, num);

}

void enter(int u[][num], int n){

for (int i=0; i<n; i++){

printf("\nEnter %d string of matrics", i+1);

for (int j=0; j<n; j++)

scanf("%d", &u[i][j]);}

}

void display(int u[][num], int n){

for (int i=0; i<n; i++){

for (int j=0; j<n; j++)

printf("%d\t", u[i][j]);

printf("\n");}

}

Зверніть увагу на виклик функції: enter(arr, num). Приймаюча функція одержує не весь масив, а тільки адресу першого елемента масиву.

8.2. Постановка задачі

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