Міністерство освіти і науки України
НУ ”Львівська політехніка”
Кафедра ЕОМ
Звіт
про виконання лабораторної роботи №7
з курсу: „Засоби системного програмування”
на тему
Опрацювання структур
Тема роботи: Опрацювання структур.
Мета роботи: Закріпити теоретичні знання та оволодіти практичними навиками опрацювання структур даних. Засвоїти техніку створення та опрацювання складних типів даних.
Завдання на лабораторну роботу
Розробити програмне забезпечення для опрацювання структур відповідно до заданого варіанту.
Для внутрішнього представлення даних, що опрацьовуються, розробити відповідні структури даних.
Під зберігання символьних рядків виділяти тільки мінімальний об’єм пам’яті.
Прямокутники (у межах даних задач) однозначно представляються координатами верхнього лівого та нижнього правого кутів.
Кількість записів передавати програмі через аргументи функції main().
Дані вводити зі стандартного пристрою вводу а результати виводити на стандартний пристрій виводу.
Забезпечити коректне звільнення динамічно виділеної пам’яті при завершенні використання даних під які вона виділена.
Звернути особливу увагу на обробку помилок, які користувач може зробити при використанні програми.
При вирішенні задач забезпечити дружній інтерфейс з користувачем.
Індивідуальне завдання: Ввести довільне число іменованих прямокутників. Впорядкувати введені прямокутники в алфавітному порядку за іменами та вивести результати
Результати виконання роботи.
При запуску програми поряд з іменем .exe файлу потрібно ввести кількість
Текст програми:
# include <stdlib.h>
# include <stdio.h>
# include <conio.h>
# include <string.h>
# include <ctype.h>
int main(int argc, char *argv[])
{
int n,k,i,j,tmp1,tmp2,tmp3,tmp4,byte;
struct Cub {
char name[20];
int x1,y1;
int x2,y2;
};
struct Cub *box[100];
struct Cub res[100];
char tmp[20];
clrscr();
if( *argv[1]==NULL) {printf("Eror..."); return 0;}
sscanf(argv[1],"%d",&n);
for(i=0;i<n;i++)
if ((box[i]=malloc((sizeof(char[20])+4*sizeof(int))) )==NULL)
{
printf("Not enought memory!!!");
return 1;
}
for(i=0;i<n;i++)
{
printf("Enter name of cub%d..",i);
scanf("%s",&box[i]->name);
printf("Enter koordunatu X1,Y1..");
scanf("%d %d",&box[i]->x1,&box[i]->y1);
printf("Enter koordunatu X2,Y2..");
scanf("%d %d",&box[i]->x2,&box[i]->y2);
}
for(i=0;i<n;i++)
{
strcpy(tmp,box[i]->name);
for(j=i;j<n;j++)
if(strcmp(tmp,box[j]->name)>=0)
{
strcpy(tmp,box[j]->name);
k=j;
}
if(strcmp(tmp,box[i]->name)<0)
{ tmp1=box[i]->x1;tmp2=box[i]->y1;tmp3=box[i]->x2;tmp4=box[i]->y2;
strcpy(box[k]->name,box[i]->name);
box[i]->x1=box[k]->x1;box[i]->y1=box[k]->y1;
box[i]->x2=box[k]->x2;box[i]->y2=box[k]->y2;
strcpy(box[i]->name,tmp);
box[k]->x1=tmp1;box[k]->y1=tmp2;box[k]->x2=tmp3;box[k]->y2=tmp4;
}
}
for(i=0;i<n;i++)
printf("\nName of %d is %s.Koop.(%d,%d),(%d,%d)",i,box[i]->name,box[i]->x1,box[i]->y1,box[i]->x2,box[i]->y2);
getch();
return 0;
}
Внаслідок виконання програми на екрані отримаємо:
..\labst_7.exe 3
Enter name of cub 0 ..abc
Enter kordunatu X1,Y1..3 4
Enter kordunatu X2,Y2..4 3
Enter name of cub 1 ..bca
Enter kordunatu X1,Y1..1 2
Enter kordunatu X2,Y2..2 1
Enter name of cub 2 ..acb
Enter kordunatu X1,Y1..4 5
Enter kordunatu X2,Y2..5 4
Name of 0 is abc.koop.(3,4),(4,3)
Name of 1 is acb.koop.(4,5),(5,4)
Name of 2 is bca.koop.(1,2),(2,1)
Висновок: на даній лабораторній роботі я оволодів практичними навиками програмування структур на мові Сі.