Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторн_робот_Ч2.doc
Скачиваний:
19
Добавлен:
03.11.2018
Размер:
2.12 Mб
Скачать

3.3. Визначення змінних програми (варіант 1)

 Програма буде складатися з двох функцій - main() і fill(). Відповідно до принципу модульності бажано, щоб функції мали мінімальну кількість загальних змінних, і тут ми маємо можливість обійтися зовсім без них. Усі

змінні, з якими працюють наші функції, будуть локальними змінними функцій або параметрами.

Змінні для функції main().

    Покажчик на початок лінійного масиву, у якому розміщуються дані матриці:

int *Ar;

    Розмірність масиву:

int S;

Загальна кількість елементів масиву (його використання буде видно з тексту програми):

Int size;

    Покажчик на поточний елемент масиву при його виводі:

int *Cr;

    Лічильник виведених елементів:

int i;

    Параметри для функції fill().

    Покажчик на початок лінійного масиву, у якому розміщуються дані матриці:

int *A;

    Розмірність масиву:

int s;

    Змінні для функції fill().

    Покажчик на поточний елемент масиву при його обробці:

int *C;

    Номери рядка і стовпця:

short l, r;

    Поточний член лінійної послідовності: int k=1;

3.4. Розробка тексту програми (варіант 1)

    Текст програми починаємо з підключення файлів: stdio.h, alloc.h, stdlib.h (в останньому визначені макроси max і min).

    Включаємо опис функції fill() і відкриваємо головну функцію. У головній функції об’являємо її локальні змінні, виводимо запрошення і вводимо значення розмірності матриці S. Розмірність порівнюється з нижньою і з верхньою границею і, якщо вона виходить за границі, виводиться відповідне повідомлення і програма завершується (функцією exit()). Якщо S задовольняє встановленим умовам, його значення виводиться на екран.

    Потім виділяється пам'ять для розміщення матриці. Для цього викликається функція malloc(). Їй передається розмір пам'яті в байтах, що потрібний для розміщення S2 елементів типу int. Функція malloc() повертає покажчик на виділену область пам'яті, значення цього покажчика записується в змінну Ar - це буде покажчик на початок масиву, в якому розмістяться дані матриці. Якщо значення, що повернула функція malloc(), - порожній покажчик, це ознака того, що пам'яті не вистачає, у цьому випадку виводиться повідомлення і програма завершується.

    Оператор:

fill(Ar,S); - звертання до функції заповнення матриці. Функції передаються: покажчик на початок масиву і розмірність матриці.

    Після повернення управління з функції fill() уже готова матриця виводиться на екран. При виводі матриця розглядається як лінійний масив з S2 елементів. Лічильник i міняється від 0 до S2-1. Але звертання до елементів матриці в цьому циклі ведеться через покажчик Cr. У початкових установках цей вказівник установлюється на початок масиву, а після кожної ітерації збільшується на 1, тобто зміщується на наступний елемент масиву. Лічильник i використовується для визначення моменту виходу з циклу, а також для переходу на новий рядок екрана після виводу кожних S елементів - для цього перевіряється умова: i%S==S-1.

    Останньою дією у функції main() є звільнення за допомогою функції free() виділеної раніше пам'яті.

    Функція fill() отримує параметри - покажчик на початок масиву і розмірність матриці. Тіло функції починається з об’явлення її локальних змінних, перемінна k отримує початкове значення при об’явленні.

    Далі у функції організуються вкладені цикли для перебору стрічок і стовпців. Але номери стрічки і стовпця використовуються не для звертання до елементів матриці, а тільки для перевірки, чи попадає елемент у нульову або ненульову область (у точній відповідності умовам, наведеним у п.3.2). Звертання до елементів матриці ведеться через покажчик C, що вказує на поточний елемент матриці. Цей покажчик установлюється на початок масиву в початкових установках зовнішнього циклу і збільшується на 1 наприкінці кожної ітерації внутрішнього циклу.

Функція max() реалізована як макрос бібліотеки stdlib (заголовочний файл stdlib.h), який повертає більше значення з двох заданих a і b. Функція повертає результат такого ж типу, як і тип її аргументів. Аргументи і повертаючі значення повинні бути того ж типу. Функція призначена тільки для програм на мові С.

Синтаксис функції: (type) max(a,b);

Параметри: a, b - значення будь-якого числового типу (int, long.double і т.д.)

Приклад використання функції max():

#include<stdio.h>

#include<stdlib.h>

main()

{

int a=9, b=45;

int c=max(a,b);

printf(“max(%d,%d)= =%d\n”, a, b, c);

return 0;

}

Функція mіn() реалізована як макрос бібліотеки stdlib (заголовочний файл stdlib.h), який повертає менше з двох заданих значень a і b. Тип цієї функції співпадає з типом її аргументів. Аргументи і повертаючі значення повинні бути одного і того ж типу. Цю функцію можна використовувати тільки в програмах на мові С.

Синтаксис функції: (type) min (a, b);

Параметри: a, b - значення будь-якого числового типу (int, long.double і т.д.)

Приклад використання функції mіn() :

#include<stdio.h>

#include<stdlib.h>

main()

{

int a=9, b=45;

int c=min(a,b);

printf(“min(%d,%d)= =%d\n”, a, b, c);

return 0;

}

    Повний текст програми наведений нижче.

#include <stdio.h>

#include <alloc.h>

#include <stdlib.h>