DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Створення багатомодульних програм

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Електронні обчислювальні машини

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

Рік:
2004
Тип роботи:
Лабораторна робота
Предмет:
Засоби системного програмування
Група:
КI
Коротко про документ

Про що ця робота

У звіті розглядається створення багатомодульних програм на мові C для опрацювання структурованих даних. Наведено код програми, заголовні файли та результати тестування алгоритму пошуку прямокутників, що не перетинаються.

У роботі розглядаються

  • Системне програмування
  • Багатомодульні програми
  • Мова програмування C
  • Структури даних
  • Динамічна пам'ять
  • Обробка помилок

Зміст і розділи

  1. Мета роботи
  2. Завдання на лабораторну роботу
  3. Аналіз завдання та опис алгоритму вирішення задачі
  4. Текст програми
  5. Опис результатів тестування
  6. Висновок
Для кого:Студенти технічних спеціальностей та викладачі програмування
Викладачі:Не вказано

Ключові поняття

багатомодульна програмафункція main()динамічна пам'ятьструктура данихаргументи командного рядказаголовний файлпрямокутникмодуль

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 8 з курсу „ Засоби системного програмування ” Тема: Створення багатомодульних програм. Львів – 2004 Мета роботи: Закріпити теоретичні знання та оволодіти практичними навиками створення багатомодульних програм. Засвоїти техніку передавання даних функціям через параметри. Завдання на лабораторну роботу Розробити багатомодульне програмне забезпечення для опрацювання структурованих даних відповідно до заданого варіанту. Для створення багатомодульного програмного забезпечення використовувати файл проекту. У вигляді окремої функції (оформляється як окремий модуль) реалізувати підкреслену частину варіанту завдання. Даними з підпрограмами (функціями) обмінюватися через параметри функцій. Функції, що реалізовані в окремих модулях, повинні описуватися в файлах заголовків. Для внутрішнього представлення даних, що опрацьовуються, розробити відповідні структури даних. Під зберігання символьних рядків виділяти тільки мінімальні об’єми пам’яті. Прямокутники (у межах даних задач) однозначно представляються координатами верхнього лівого та нижнього правого кутів. Кількість записів передавати програмі через аргументи функції main(). Дані вводити зі стандартного пристрою вводу а результати виводити на стандартний пристрій виводу. Забезпечити коректне звільнення динамічно виділеної пам’яті при завершенні використання даних під які вона виділена. Звернути особливу увагу на обробку помилок, які користувач може зробити при використанні програми. При вирішенні задач забезпечити дружній інтерфейс з користувачем. Варіант 23. Ввести довільне число іменованих прямокутників. Вибрати із введених прямокутників тільки ті, що не перетинаються та вивести результати. Аналіз завдання та опис алгоритму вирішення задачі Прямокутники зберігаємо в масиві змінних типу структура, яка складається з полів: назва прямокутника, координати лівого верхнього та правого нижнього кутів x1, y1, x2, y2, та поле признаку перетину прямокутника з будь-яким іншим. На початку програми виділяється пам’ять під масив прямокутників, відповідно до їх кількості. Кількість прямокутників передаємо програмі через аргументи функції main(). int argc (кількіть аргументів) ; char *argv[] – самі аргументи. При перегляді прямокутників ми відмічаємо, чи прямокутник перетинається з іншим і виводимо на стандартний пристрій прямокутники, які ні з чим не перетнулися, з їх координатами. Текст програми Файл “Lab8.c”: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <ctype.h> #include "srch_NC.h" void Err (int e) { if (e==0) puts("ERROR: Wrong argument count!"); else if (e==1) puts("ERROR: Wrong argument!"); puts("SYNTAX: <prog_name> <number of rectangles(unsigned_int)>"); getchar(); exit(0); } void main (int argc,char *argv[]) { int i, j, n; struct rect *p; clrscr(); if (argc==2) { if (!isdigit(argv[1][0])||argv[1][0]=='-') Err(1); n=atoi(argv[1]); } else Err(0); puts("(x1;y1) ╔─────┐\t\tRules: x1 < x2" "\n │ │\t\t y1 > y2" "\n └─────╝ (x2;y2)"); printf("Quantity of rectangles : %d\n",n); p=malloc( n*sizeof(struct rect) ); for (i=0;i<n;i++) p[i].s=(char*)malloc(40*sizeof(char)); for (i=0;i<n;i++) { printf("Enter name of rectangle # %d : ",i+1); scanf("%s",p[i].s); p[i].s=(char*)realloc(p[i].s,strlen(p[i].s)+1); do{ printf(" Enter x1 : "); scanf("%d",&p[i].x1); printf(" Enter y1 : "); scanf("%d",&p[i].y1); printf(" Enter x2 : "); scanf("%d",&p[i].x2); printf(" Enter y2 : "); scanf("%d",&p[i].y2); } while (p[i].x1>=p[i].x2 || p[i].y1<=p[i].y2); p[i].no_cross=1; } Search_No_Cross (p,n); puts("Non-crossing rectangles :"); j=0; for (i=0;i<n;i++) { if (p[i].no_cross==1) { printf("%s (%d,%d) (%d,%d)\n",p[i].s,p[i].x1,p[i].y1,p[i].x2,p[i].y2); j++; } } if (j == 0) puts(" <none> "); for (i=0;i<n;i++) free(&p[i].s); free(p); getchar(); getchar(); } Файл “srch_nc.c”: #include "srch_NC.h" void Search_No_Cross (struct rect *p,int n) {int i,j; for (i=0;i<n-1;i++) { for (j=i+1;j<n;j++) if (p[j].x1>p[i].x2 || p[j].x2<p[i].x1 || p[j].y1<p[i].y2 || p[j].y2>p[i].y1); else {p[i].no_cross=0; p[j].no_cross=0; } } } Файл “srch_nc.h”: struct rect {char *s; int x1,y1,x2,y2; unsigned char no_cross;}; void Search_No_Cross (struct rect* p,int n); Опис результатів тестування Для запуска програми в командний рядок потрібно ввести ім’я програми з необхідним аргументом: Lab8.exe n , де n – розмір матриці. Для тестування програми було використано три прямокутники – введено Lab8.exe 3. Кінцевий вигляд результатів тестування програми: (x1;y1) ╔─────┐ Rules: x1 < x2 │ │ y1 > y2 └─────╝ (x2;y2) Quantity of rectangles : 3 Enter name of rectangle # 1 : Pershyj Enter x1 : 1 Enter y1 : 5 Enter x2 : 3 Enter y2 : 2 Enter name of rectangle # 2 : Drugyj Enter x1 : 10 Enter y1 : 10 Enter x2 : 11 Enter y2 : 9 Enter name of rectangle # 3 : Tretij Enter x1 : 0 Enter y1 : 4 Enter x2 : 2 Enter y2 : 0 Non-crossing rectangles : Drugyj (10,10) (11,9) Висновок: Виконуючи дану лабораторну роботу, я закріпив теоретичні знання та оволодів практичними навиками створення багатомодульних програм. Засвоїв техніку передавання даних функціям через параметри , використовував передачу параметрів програмі через аргументи функції main(), при вводі невірної кількості параметрів, програма повідомляє про помилку та припиняє свою роботу.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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