Міністерство науки і освіти України
Національний університет “Львівська Політехніка”
Інститут комп’ютерних наук та інформаційних технологій
Кафедра ПЗ
Звіт
З лабораторної роботи № 12
з курсу «Основи програмування та алгоритмічні мови»
Тема: Організація обміну інформацією з дисковими файлами.
Мета: Здобути практичні навики у використанні дискових файлів для зчитування та занесення інформації.
Завдання: З клавіатури ввести послідовність записів, які містять дані про результати сесії студентів групи: <Прізвище>, <Ім’я>, <Дата народження>, <Список екзаменаційних оцінок>. Сукупність даних про студентів групи оформити у масив. Роздрукувати введені дані у вигляді таблиці, а також подати інформацію згідно варіанту.
Відсортувавати дані за прізвищами студентів в порядку протилежному алфавітному. Визначити п’ять студентів з найнижчим середнім рейтинговим балом.
Виконати наведений варіант завдання з лабораторної роботи №5, використавши файли для введення вхідних даних та виведення результатів.
Блок-схема алгоритму
Текст програми
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define F 15
#define M 20
struct s
{
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, k, p, n = 0, j, s_n = 0;
float ser_bal[M], min;
struct s stud[M], sort;
FILE *outf, *inf = fopen("c:\\borlandc/inf.txt", "r");
clrscr();
while (!feof(inf))
{
fscanf(inf, "%s%s%f%d%f%f%f%f",&stud[n].surname,&stud[n].name,&stud[n].data,&stud[n].rik,
&stud[n].pr1,&stud[n].pr2,&stud[n].pr3,&stud[n].pr4);
n++;
}
fclose(inf);
outf = fopen("c:\\borlandc/outf.txt", "w");
for(i = 0; i < n; i++)
fprintf(outf, "\n%s\t%s\t%.2f.%d\t%.0f\t%.0f\t%.0f\t%.0f",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++)
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;
}
}
fprintf(outf, "\n\nDruk v poriadky protylyznomu alfavitnomy\n");
for (i = 0; i < n; i++)
fprintf(outf, "\n%s\t%s\t%.2f.%d\t%.0f\t%.0f\t%.0f\t%.0f",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++)
ser_bal[i]=(stud[i].pr1+stud[i].pr2+stud[i].pr3+stud[i].pr4)/4;
fprintf(outf, "\n\n5 studentiv z naynyschym serednim balom:\n\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)
{
fprintf(outf, "%s\t%s\t%.2f.%d\t%.0f\t%.0f\t%.0f\t%.0f\n",stud[i].surname,stud[i].name,stud[i].data,stud[i].rik,
stud[i].pr1,stud[i].pr2,stud[i].pr3,stud[i].pr4);
ser_bal[i] = 101;
s_n++;
}
}
min = 101;
for (i = 0; i < n; i++)
if (min > ser_bal[i])
min = ser_bal[i];
}
fclose(outf);
}
Протокол роботи програми
Вхідний файл
Kulpa Ivan 20.10 1989 5 4 5 3
Vandych Andriy 01.11 1991 5 5 4 5
Kopcha Ivan 11.10 1990 4 1 3 2
Dubnyckiy Oleh 25.12 1990 5 2 2 4
Butsjak Svjatoslav 07.11 1989 3 2 2 4
Kuzmych Natalija 31.12 1990 5 5 5 5
Вихідний файл
Kulpa Ivan 20.10.1989 5 4 5 3
Vandych Andriy 1.11.1991 5 5 4 5
Kopcha Ivan 11.10.1990 4 1 3 2
Dubnyckiy Oleh 25.12.1990 5 2 2 4
Butsjak Svjatoslav 7.11.1989 3 2 2 4
Kuzmych Natalija 31.12.1990 5 5 5 5
Druk v poriadky protylyznomu alfavitnomy
Vandych Andriy 1.11.1991 5 5 4 5
Kuzmych Natalija 31.12.1990 5 5 5 5
Kulpa Ivan 20.10.1989 5 4 5 3
Kopcha Ivan 11.10.1990 4 1 3 2
Dubnyckiy Oleh 25.12.1990 5 2 2 4
Butsjak Svjatoslav 7.11.1989 3 2 2 4
5 studentiv z naynyschym serednim balom:
Kopcha Ivan 11.10.1990 4 1 3 2
Butsjak Svjatoslav 7.11.1989 3 2 2 4
Dubnyckiy Oleh 25.12.1990 5 2 2 4
Kulpa Ivan 20.10.1989 5 4 5 3
Vandych Andriy 1.11.1991 5 5 4 5
Висновок
Здобути практичні навики у використанні дискових файлів для зчитування та занесення інформації.