//вивід рамки
gotoxy(35,24); //перехід на вказане місце екрану
printf("L=========-\n"); //вивід рамки
gotoxy(30,27); //перехід на вказане місце екрану
printf("г========================¬");//вивід рамки
gotoxy(30,28); //перехід на вказане місце екрану
printf("¦ What do you want to do?¦"); //вивід рамки
gotoxy(30,29); //перехід на вказане місце екрану
printf("L========================-\n"); //вивід рамки
gotoxy(56,27); //перехід на вказане місце екрану
printf("г=¬");//вивід рамки
gotoxy(56,28); //перехід на вказане місце екрану
printf("¦ ¦"); //вивід рамки
gotoxy(56,29); //перехід на вказане місце екрану
printf("L=-");//вивід рамки
gotoxy(57,28); //перехід на вказане місце екрану
q=getche(); //ввід пункту
delay(15); //затримка виконання програми
if (q=='1') new_zapus(); //якщо вибраний 1 пункт, то викликається функція вводу нових даних
else if (q=='2') new_marks(); //якщо 2 – функція вводу поточних оцінок
else if (q=='3') vuvid(); //якщо 3 – функція виводу даних
else exit(0); //інакше вихід з програми
return q;
}
/*-----------------------------Функція збереження даних у файл------------------------------------------*/
void save()
{
FILE *iop;
register int i;
if ((iop=fopen("Yarik2.dat","wb"))==NULL)
{
puts("ERROR");
exit(0);
}
for (i=0;i<n;i++) {
if(fwrite(&kvn[i],sizeof(struct command),1,iop)!=1) puts("error writing");
}
fclose(iop);
}
void load()
{
FILE *iop;
register int i;
if ((iop=fopen("Yarik2.dat","r"))==NULL)
{
puts("ERROR");
exit(0);
}
for (i=0;i<n;i++) {
if (fread(&kvn[i],sizeof( struct command),1,iop)!=1)
{
if (feof(iop)) break;
puts("error reading");
}
}
fclose(iop);
}
/*---------------------------Нові дані-------------------------------------------*/
void new_zapus()
{
int s;
char q;
char temp[25];
for (int i=0;i<n;i++) //цикл від 0 до n
{
clrscr(); //очищуємо екран
s=0; //обнуляємо суму
printf("\t\t\t\tг===========¬\n");
printf("\t\t\t\t¦%2d command:¦\n",i+1);
printf("\t\t\t\tL===========-\n"); //вивід рамки
printf("Name: ");
scanf("%s",&kvn[i].name); //ввід назви команди
printf("Marks:\n");
for (int j=0;j<=7;j++)
{
do {
printf("г===========¬\n");
printf("¦%2d juery: ¦\n",j+1);
printf("L===========-................");
scanf("%d",&kvn[i].oc[j]); //ввід 8 оцінок
s+=kvn[i].oc[j]; //обчислення суми оцінок
}while(kvn[i].oc[j]<2||kvn[i].oc[j]>5);
}
kvn[i].now=s/8.; //обчислення середнього арифметичного
kvn[i].results=kvn[i].now;
}
sort(); //виклик функції сортування
save(); //виклик функції збереження даних
menu(); //виклик функції меню
}
/*-----------------------------Поточні оцінки----------------------------------------*/
void new_marks()
{
int s;
load();
for (int i=0;i<n;i++)
{
s=0;
clrscr();
printf("г========================¬\n");
printf("¦%24s¦\n",kvn[i].name);
printf("L========================-\n");
for (int j=0;j<=7;j++)
{
printf("г===========¬\n");
printf("¦%2d juery: ¦\n",j+1);
printf("L===========-................");
do {
scanf("%d",&kvn[i].oc[j]);
s+=kvn[i].oc[j];
}while(kvn[i].oc[j]<2||kvn[i].oc[j]>5);
}
kvn[i].now=s/8;
kvn[i].results+=kvn[i].now;
}
sort();
save();
menu();
}
/*----------------------------Вивід даних----------------------------------------*/
void vuvid()
{
char q;
clrscr();
load();
sort();
/*вивід рамки*/
printf("г=T========================T=T=T=T=T=T=T=T=T===
===¬\n");
printf("¦#¦ NAME ¦1¦2¦3¦4¦5¦6¦7¦8¦RESULT¦\n");
printf("L=¦========================¦=¦=¦=¦=¦=¦=¦=¦=¦======-\n");
for (int i=0;i<n;i++)
{
printf("г=T========================T=T=T=T=T=T=T=T=T======¬\n");
printf("¦%1d¦%24s¦%1d¦%1d¦%1d¦%1d¦%1d¦%1d¦%1d¦%1d¦%6.2f¦\n",
i+1,kvn[i].name,kvn[i].oc[0],kvn[i].oc[1],kvn[i].oc[2],kvn[i].oc[3],
kvn[i].oc[4],kvn[i].oc[5],kvn[i].oc[6],kvn[i].oc[7],kvn[i].results);
printf("L=¦========================¦=¦=¦=¦=¦=¦=¦=¦=¦======-\n"); //вивід результатів у рамці
}
gotoxy(25,25);
printf("PRESS ANY KEY :-)");
q=getch();
menu();
}
/*----------------------Сортування методом “Бульбашок”---------------------------------------------*/
void sort()
{
float max;
int k;
command temp;
for (int i=0;i<n;i++)
{
max=kvn[i].results;
k=i;
for (int j=i;j<n;j++)
if (kvn[j].results>max)
{
max=kvn[j].results;
k=j;
}
temp=kvn[i];
kvn[i]=kvn[k];
kvn[k]=temp;
}
}
Контрольний приклад виконання та результати його виконання на ПК
Yarik2
Номер команди | Назва команди | Оцінки суддів | Середній бал
1 | Сусідній двір | 5 | 4 | 5 | 4 | 5 | 4 | 5 | 4 | 5.50
2 | Дівочий табір | 3 | 3 | 4 | 4 | 4 | 5 | 3 | 4 | 3.75
3 | Веселуни | 5 | 5 | 5 | 5 | 4 | 5 | 5 | 5 | 4.87
4 | Шоколад | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5.00
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ
Глушаков С.В., Коваль А.В., Смирнов С.В. Язык программирования С++. – Х.: Фолио,2002.
Прата С. Язык программирования С++. – М .- СПб.- К. : Diasoft, 2003.
Кораблев В. С и С++. – К.: BHV, 2002.
Спірідонов В.І., Войтков В.Г., Обчислювальна техніка і програмування. – Хмельницький: ХТІб 1992.
Єжова Л.Ф. Алгоритмізація і програмування процедур обробки інформації. – К.: КНАУ, 2000.