Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабораторна_алг_2.0

.docx
Скачиваний:
16
Добавлен:
12.05.2020
Размер:
245.41 Кб
Скачать

Міністерство освіти і науки, молоді та спорту України

Національний університет «Львівська політехніка»

Інститут комп’ютерних наук та інформаційних технологій

Кафедра автоматизованих систем управління

Лабораторна роботи №2

Тема:

«Програмування функцій.Взаємодія формальних і фактичних параметрів»

Виконала:

Ст. гр. КН-102

Фоменко Н.Р.

Перевірив

Скрибайло-Леськів Д.Ю

Львів 2020

Лабораторна робота №2

Тема роботи: Програмування функцій.Взаємодія формальних і фактичних параметрів

Мета роботи:

  • Навчитисьрозробляти функції,які реалізують задані дії та повертають необхідні значення;

  • Практично засвоїти способи передавння у функції значень різних типів та повернення із функцій результатів їхнього виконання;

Завдання лабораторної роботи

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

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

2. Продумати склад параметрів кожної функції і тип значення, яке вона повертає. У випадках, коли функція повинна повертати декілька різних значень, то один з них можна передати як результуюче значення функції, а всі інші треба записати за адресами, які функція має отримати через свої параметри-вказівники.

Якщо ж у функцію треба передати адресу вказівника, в який буде записано адресу певного об'єкта, то відповідний параметр має бути вказівником на вказівник, тобто зберігати адресу цього вказівника.

3. Особливу увагу слід звертати на параметри функцій, які є масивами або символьними рядками, враховуючи, що відповідний формальний параметр розглядається у функції як змінна-вказівник на початок масиву (символьного рядка).

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

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

5. Оскільки в мові С функції є самостійними програмними одиницями, то кожну створену функцію (групу функцій) можна ввести та відкомпілювати автономно, щоб перевірити її синтаксичну правильність.

6. Узагальній програмі допільно першою записати функцію таїп(),а всі інші розроблені функції розташувати за нею. В заголовній частині програми необхідно оголосити прототипи всіх користувацьких функцій.

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

8. Оформити звіт з лабораторної роботи, в якому вказати: " задачу індивідуального завдання; " текст розробленої програми з усіма функціями та коментарями; " результати виконання програми для різних значень вхідних висновок.

Індивідуальне завдання:

Варіант 31

Розробити функцію, яка шукає у заданому символьному рядку всі числа (відомо, що в рядку крім тексту є тільки цілі числа), перетворює їх у формат int та заносить у вказаний масив цілих чисел. З клавіатури ввести послідовність символьних рядків, в яких крім слів є цілі числа. Викорис­товуючи розроблену функцію, заповнити цілочислову матрицю числами з введених рядків .Надрукувати створену матрицю.

#include <stdio.h>

#include <ctype.h>

#include <stdlib.h>

#define LEN 100

#define KST 5

char* FindNumber(char* s);

long GetNumber(char* pn, char** next);

int main() {

char strings[LEN][LEN];

int i = 0;

int p = 0;

int k = 0;

while (k < KST) {

printf("Enter a string:\n");

gets_s(strings[i], LEN);

i++;

k++;

}

int j = 0;

printf("\n\n%d",k);

while (k != 0) {

char* pnum = strings[j];

while ((pnum = FindNumber(pnum)) != NULL) {

printf("%d\t", GetNumber(pnum, &pnum));

if (*pnum == '\0') break;

}

j++;

k--;

puts("\n");

}

system("pause");

return 0;

}

char* FindNumber(char* s) {

while (!isdigit(*s) && *s != '0')

s++;

if (*s == '\0') return NULL;

else return s;

}

long GetNumber(char* pn, char** next) {

long numb = 0;

while (isdigit(*pn)) {

numb = numb * 10 + (*pn - 48);

pn++;

}

*next = pn;

return numb; }

Висновок:

Виконавши завдання даної лабораторної роботи я Навчилась розробляти функції,які реалізують задані дії та повертають необхідні значення;

Також практично засвоїтла способи передавння у функції значень різних типів та повернення із функцій результатів їхнього виконання

Соседние файлы в предмете Алгоритмизация и программирование