Міністерство науки і освіти України
Національний університет “Львівська Політехніка”
Інститут комп’ютерних наук та інформаційних технологій
Кафедра ПЗ
Звіт
З лабораторної роботи № 11
з курсу «Основи програмування та алгоритмічні мови»
Тема: Організація структур мовою С.
Мета: Навчитися організовувати структури та розробляти алгоритми обробки структур засобами мови С.
Завдання: З клавіатури ввести послідовність записів, які містять дані про результати сесії студентів групи: <Прізвище>, <Ім’я>, <Дата народження>, <Список екзаменаційних оцінок>. Сукупність даних про студентів групи оформити у масив. Роздрукувати введені дані у вигляді таблиці, а також подати інформацію згідно варіанту.
Відсортувавати дані за прізвищами студентів в порядку протилежному алфавітному. Визначити п’ять студентів з найнижчим середнім рейтинговим балом.
Блок-схема алгоритму
Текст програми
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define F 15
#define M 20
struct st
{
char surname[F];
char name[F];
float data;
int rik;
float pr1;
float pr2;
float pr3;
float pr4;
};
void main(void)
{
int a,b,i,h,k,p,n,j, s_n = 0;
float ser_bal[M], min;
struct st stud[M],sort;
clrscr();
puts("Vvedit kilkist studentiv: ");
scanf("%d",&n);
printf("Vvedit dani pro stydentiv u takiy poslidovnosti:\n"
" -prizvysche\n"
" -imia\n"
" -chyslo i misiats cherez krapku\n"
" -rik narodzhennya\n"
"Rezyltaty ispytiv z:\n"
" -programuvannja\n"
" -geometrija\n"
" -alhebrja\n"
" -istorija\n");
for(i=0; i<n; i++)
{ h=i;
printf("Vvedit dani pro %d stydenta:\n", ++h);
scanf("%s%s%f%d%f%f%f%f",&stud[i].surname,&stud[i].name,&stud[i].data,&stud[i].rik,
&stud[i].pr1,&stud[i].pr2,&stud[i].pr3,&stud[i].pr4);
}
for(i = 0; i < n; i++)
{
printf("\n%s", stud[i].surname);
gotoxy(18, wherey());
printf("%s", stud[i].name);
gotoxy(33, wherey());
printf("%.2f.%d", stud[i].data,stud[i].rik);
gotoxy(47, wherey());
printf("%.0f", stud[i].pr1);
gotoxy(51, wherey());
printf("%.0f", stud[i].pr2);
gotoxy(55, wherey());
printf("%.0f", stud[i].pr3);
gotoxy(59, wherey());
printf("%.0f", stud[i].pr3);
}
for(i = 0; i < n; i++)
for(k = 0; k < n; k++)
{
p=strcmp(stud[i].surname,stud[k].surname);
if (p > 0)
{
sort = stud[i];
stud[i] = stud[k];
stud[k] = sort;
}
}
printf("\n\nDruk v poriadky protylyznomu alfavitnomy\n");
for (i = 0; i < n; i++)
{
printf("\n%s", stud[i].surname);
gotoxy(18, wherey());
printf("%s", stud[i].name);
gotoxy(33, wherey());
printf("%.2f.%d", stud[i].data,stud[i].rik);
gotoxy(47, wherey());
printf("%.0f", stud[i].pr1);
gotoxy(51, wherey());
printf("%.0f", stud[i].pr2);
gotoxy(55, wherey());
printf("%.0f", stud[i].pr3);
gotoxy(59, wherey());
printf("%.0f", stud[i].pr3);
}
for(i = 0; i < n; i++)
ser_bal[i]=(stud[i].pr1+stud[i].pr2+stud[i].pr3+stud[i].pr4)/4;
printf("\n\n5 studentiv z naynyschym serednim balom:\n");
min = ser_bal[0];
for (i = 0; i < n; i++)
{
if (min > ser_bal[i])
min = ser_bal[i];
}
for (j = 0; j < 5; j++)
{
for (i = 0; i < n; i++)
{
if (ser_bal[i] == min && s_n < 5)
{
printf("\n%s", stud[i].surname);
gotoxy(18, wherey());
printf("%s", stud[i].name);
gotoxy(33, wherey());
printf("%.2f.%d", stud[i].data,stud[i].rik);
gotoxy(47, wherey());
printf("%.0f", stud[i].pr1);
gotoxy(51, wherey());
printf("%.0f", stud[i].pr2);
gotoxy(55, wherey());
printf("%.0f", stud[i].pr3);
gotoxy(59, wherey());
printf("%.0f", stud[i].pr3);
ser_bal[i] = 101;
s_n++;
}
}
min = 101;
for (i = 0; i < n; i++)
if (min > ser_bal[i])
min = ser_bal[i];
}
fflush(stdin);
getchar();
}
Протокол роботи програми
Vvedit kilkist studentiv:
6
Vvedit dani pro stydentiv u takiy poslidovnosti:
-prizvysche
-imia
-chyslo i misiats cherez krapku
-rik narodzhennya
Rezyltaty ispytiv z:
-programuvannja
-geometrija
-alhebrja
-istorija
Vvedit dani pro 1 stydenta:
Kulpa Ivan 20.10 1989 5 4 5 3
Vvedit dani pro 2 stydenta:
Vandych Andriy 01.11 1991 5 5 4 5
Vvedit dani pro 3 stydenta:
Kopcha Ivan 11.10 1990 4 1 3 2
Vvedit dani pro 4 stydenta:
Dubnyckiy Oleh 25.12 1990 5 2 2 4
Vvedit dani pro 5 stydenta:
Butsjak Svjatoslav 07.11 1989 3 2 2 4
Vvedit dani pro 6 stydenta:
Kuzmych Natalija 31.12 1990 5 5 5 5
Kulpa Ivan 20.10.1989 5 4 5 5
Vandych Andriy 1.11.1991 5 5 4 4
Kopcha Ivan 11.10.1990 4 1 3 3
Dubnyckiy Oleh 25.12.1990 5 2 2 2
Butsjak Svjatoslav 7.11.1989 3 2 2 2
Kuzmych Natalija 31.12.1990 5 5 5 5
Druk v poriadky protylyznomu alfavitnomy
Vandych Andriy 1.11.1991 5 5 4 4
Kuzmych Natalija 31.12.1990 5 5 5 5
Kulpa Ivan 20.10.1989 5 4 5 5
Kopcha Ivan 11.10.1990 4 1 3 3
Dubnyckiy Oleh 25.12.1990 5 2 2 2
Butsjak Svjatoslav 7.11.1989 3 2 2 2
5 studentiv z naynyschym serednim balom:
Kopcha Ivan 11.10.1990 4 1 3 3
Butsjak Svjatoslav 7.11.1989 3 2 2 2
Dubnyckiy Oleh 25.12.1990 5 2 2 2
Kulpa Ivan 20.10.1989 5 4 5 5
Vandych Andriy 1.11.1991 5 5 4 4
Висновок
Я навчився організовувати структури та розробляти алгоритми обробки структур засобами мови С.