Написание программы с использованием структурного шаблона с именем ZNAK

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

°турыflagcharлокальнаяпеременная, отвечающая за продолжение записейcomparercharлокальнаяпеременная, в которую записываются данные структуры ZNAK

Листинг

 

#include

#include

#include ZNAK

{NAME[30],ZODIAK[20];BDAY[3];

};inp

{ZNAK *BOOK;number;

};menu();inp input(int number, struct ZNAK *BOOK);showRecords(struct ZNAK *BOOK, int number);showAll(struct ZNAK *BOOK, int number);createFile(struct ZNAK *BOOK, int number){i,j,k;c;ZNAK Z;*output;((output=fopen("book.dat","w"))==NULL)

{("Не удалось создать файл.\n");

return;

}(i = 0; i < number; i++)

{(j = 0; j < number-1; j++)

{(k=2; k>=0; k--)

{((BOOK+j)->BDAY[k]==(BOOK+j+1)->BDAY[k]);((BOOK+j)->BDAY[k]>(BOOK+j+1)->BDAY[k])

{=*(BOOK+j);

*(BOOK+j)=*(BOOK+j+1);

*(BOOK+j+1)=Z;

};

}

}

}(output, "‚все записи:\n\n");(output, " \n");(output, " ИМЯ ЗОДИАК ДАТА РОЖДЕНИЯ \n");(output, " n");(i=0; i<number; i++)

{(output, " є s і s і ",(BOOK+i)->NAME,(BOOK+i)->ZODIAK);(j=0;jBDAY[2]);(output, " є\n");(i==number-1)(output, " \n");(output, " \n");

}("\n\nФайл успешно сохранен! ");

}()

{c,selection,number=0;inp rez;ZNAK *BOOK=0;(1)

{=menu();(selection)

{1:=input(number,BOOK);=rez.number;=rez.BOOK;;2:(BOOK,number);;3:(BOOK,number);

break;4:("Вы действительно хотите выйти 1-да, 2-нет (1/2)? ");c=getch();((c!='1') && (c!='2'));(c=='1')

{

_setvideomode(_DEFAULTMODE);(BOOK);(0);

}

}

}

}menu()

{c,textselected=5,textnotselected=9,buttonselected=16,buttonnotselected=14;i,selection=1,x[2]={100,612},y[4]={40,140,240,340},h=65;

_setvideomode(_VRES16COLOR);

_setbkcolor(_WHITE);

_clearscreen(_GCLEARSCREEN);(c!=13)

{(c==72)(selection==1)=4;selection--;(c==80)(selection==4)=1;selection++;

_setcolor(buttonnotselected);(i=0;i<4;i++)

{(i+1==selection)

_setcolor(buttonselected);

_rectangle(_GFILLINTERIOR,x[0],y[i],x[1],y[i]+h);

_rectangle(_GBORDER,x[0]-9,y[i]-9,x[1]+9,y[i]+h+9);(i+1==selection)

_setcolor(buttonnotselected);

}

_settextcolor(textnotselected);

_settextposition(5,32);(selection==1)

_settextcolor(textselected);

_outtext(" Создать новые записи ");(selection==1)

_settextcolor(textnotselected);

_settextposition(11,33);(selection==2)

_settextcolor(textselected);

_outtext(" Вывести по фамилии ");(selection==2)

_settextcolor(textnotselected);

_settextposition(18,35);(selection==3)

_settextcolor(textselected);

_outtext(" Вывести все ");(selection==3)

_settextcolor(textnotselected);

_settextposition(24,39);(selection==4)

_settextcolor(textselected);

_outtext(" Выход ");(selection==4)

_settextcolor(textnotselected);=getch();

}

_setvideomode(_TEXTC80);

_settextcolor(14);

_clearscreen(_GCLEARSCREEN);selection;

}inp input(int number, struct ZNAK *BOOK)

{inp rez;i,j,errorflag,errorflag2,breaker;c,flag=1,comparer[128];=0;

if(number)

{(" Записи уже существуют.Если вы хотите...\n");(" ...удалить старые записи и создать новые '1'\n");(" ...добавить записи к существующим '2'\n");(" ...завершить операцию и вернуться в меню '3'\n");=getch();((c!='1') && (c!='2') && (c!='3'));(c=='1')

{(i=0; i<number; i++)(BOOK+i);=0;("Старые данные удалены!");

}(c=='2')=1;

}(i=number; flag; i++)

{(breaker==1);

++number;=0;=(struct ZNAK*)realloc(BOOK,(i+1)*sizeof(struct ZNAK));("\nЗапись #%d: \n",i+1);

do

{=1;("\n Пожалуйста, введите имя (1-30 символов): ");

gets(comparer);(((strlen(comparer))<29) && ((atoi(comparer))==0))

errorflag2=0;(" \n Имя не может содержать больше 30 символов!. Пожалуйста, попробуйте снова.\n");

}

while(errorflag2==1);

strcpy(((BOOK+i)->NAME), comparer);

printf("\n Введите дату рождения:\n ");

{(errorflag)

{("\n \n Некорректное сочетание дня и месяца \n");("\n (Например: 35.03( в марте 31 день ))\n");("\n Пожалуйста, попробуйте снова !\n");

}++;

{=1;(" Пожалуйста, введите день (DD):");

gets(comparer);

(BOOK+i)->BDAY[0]=atoi(comparer);(((BOOK+i)->BDAY[0]0))

errorflag2=0;(" \n День должен принадлежать [1;31] интервалу. Пожалуйста, попробуйте снова.\n\n");

}(errorflag2==1);(" данные приняты!\n\n");

{=1;(" Пожалуйста,введите месяц (MM):");(comparer);

(BOOK+i)->BDAY[1]=atoi(comparer);(((BOOK+i)->BDAY[1]0))

errorflag2=0;(" \n Месяц должен принадлежать интервалу [1;12]. Пожалуйста, попробуйте снова .\n\n");

}(errorflag2==1);(" Данные приняты!\n\n");

{=1;(" ПОжалуйста, введите год (YYYY): ");(comparer);

(BOOK+i)->BDAY[2]=atoi(comparer);(((BOOK+i)->BDAY[2]999))

errorflag2=0;(" \n Год должен принадлежать интервалу [999;2011]\n\n ");

}(errorflag2==1);(" Данные приняты!\n\n");

}(((((BOOK+i)->BDAY[0])==31) && (((BOOK+i)->BDAY[1]==4) ||

((BOOK+i)->BDAY[1]==6) || ((BOOK+i)->BDAY[1]==9) || ((BOOK+i)->BDAY[1]==11) ||

((BOOK+i)->BDAY[1]==2))) || (((BOOK+i)->BDAY[1]==2) &&

(((BOOK+i)->BDAY[0]==29) || ((BOOK+i)->BDAY[0]==30))));((BOOK+i)->BDAY[0]>20 && (BOOK+i)->BDAY[1]==3 || (BOOK+i)->BDAY[0]ZODIAK);

fflush(stdin);("\nХотите ли вы продолжить ввод данных 1-да, 2-нет(1/2)? ");c=getch(); while (c!='1' && c!='2');(c=='1') flag=1;

{=0;(number)

{(BOOK, number);

printf("Нажмите любую клавишу для возврата в меню.\n");

getch();

}

}

}.BOOK=BOOK;.number=i;rez;

}showRecords(struct ZNAK *BOOK, int number)

{c, zod[20];i,j, flag;

if(number==0)

{("Ни одной записи не найдено. Введите записи.\n \