Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
НУ “Львівська політехніка”
Лабораторна робота №7
“Опрацювання структур.”
Львів 2005
Назва роботи: Опрацювання структур.
Мета роботи: Закріпити теоретичні знання та оволодіти практичними навиками опрацювання структур даних. Засвоїти техніку створення та опрацювання складних типів даних.
Завдання на лабораторну роботу.
Розробити програмне забезпечення для опрацювання структур відповідно до заданого варіанту.
Для внутрішнього представлення даних, що опрацьовуються, розробити відповідні структури даних.
Прямокутники (у межах даних задач) однозначно представляються координатами верхнього лівого та нижнього правого кутів.
Дані вводити зі стандартного пристрою вводу а результати виводити на стандартний пристрій виводу.
Забезпечити коректне звільнення динамічно виділеної пам’яті при завершенні використання даних під які вона виділена.
Звернути особливу увагу на обробку помилок, які користувач може зробити при використанні програми.
При вирішенні задач забезпечити дружній інтерфейс з користувачем.
Ввести прізвища, імена та номер залікової книжки довільного числа студентів групи. Впорядкувати введені записи за іменем у зворотному до алфавітного порядку та вивести результати.
Текст програми:
#include <stdio.h> // підключення необхідних бібліотек
#include <conio.h>
struct student { // об’ява структури з наступними полями
char group[10];
char name[20];
char surname[20];
int zal;
};
int main(int argc,char* argv[]) // головна функція
{
int i,j,max; \\ об’ява змінних
struct student *st;
int *sort,t;
// перевірка навведення початкових даних (кількість студентів)
if(argc!=2){printf("Error");return 1;}
sscanf(argv[1],"%d",&max); // зчитування із строки значення змінної згідно заданого формату
st=(struct student*)calloc(max,sizeof(struct student));// виділення пам’яті під структуру
sort=(int*)calloc(max,sizeof(int));
clrscr();
printf("Enter surname,name,and Nzal. For example (Petrov,Petro,01994436):\n");
for(i=0;i<max;i++){
printf("**************************************************\n");
printf("Surname:");scanf("%s",st[i].surname);
printf("Name:");scanf("%s",st[i].name);
printf("Nzal:");scanf("%d",&st[i].zal);
}
printf("\n");
printf("-----------------------------------------------------\n");
printf("| Sorted information about students |\n");
for(i=0;i<max;sort[i]=i++);
for(i=0;i<max-1;i++)
for(j=i+1;j<max;j++)
if(st[sort[i]].name[0]<st[sort[j]].name[0])
{
t=sort[j];sort[j]=sort[i];sort[i]=t;
}
printf("-----------------------------------------------------\n");
printf("| surname | name | zalikova |\n");
printf("-----------------------------------------------------\n");
for(i=0;i<max;i++){printf("|%11s|%14s|%24d|\n",st[sort[i]].surname,st[sort[i]].name,st[sort[i]].zal);}
printf("-----------------------------------------------------\n");
return 0;
}
Результат роботи програми:
Surname:Morozko
Name:Petro
Nzal:01222333
***********************************
Surname:Sidirov
Name:Ivan
Nzal:01232323
***********************************
Surname:Sokolov
Name:Muhajlo
Nzal:01233222
***********************************
-----------------------------------------------------
| Sorted information about student |
-----------------------------------------------------
| surname | name | zalikova |
-----------------------------------------------------
| Morozko| Petro| 01222333 |
| Sokolov| Muhajlo| 01232323 |
| Sidirov| Ivan| 01232323 |
-----------------------------------------------------
Алгоритм програми