mg *p2=start2;
clrscr();
while(p2!=NULL) {
printf("\nMAGAZINE #%d", p2->num);
printf("\n Address");
printf("\n City: %s", p2->adr.city);
printf("\n Street: %s", p2->adr.str);
printf("\n House: %d", p2->adr.dom);
printf("\nProducts");
for(n=0;n<5;n++) {
printf("\n %d)", n+1);
rintf("\n Name: %s", p2->pro[n].name);
printf("\n Price: %d", p2->pro[n].price);
printf("\n Time: %s", p2->pro[n].time);
printf("\n");
}
printf("\n\nAny key to continue...");
getch();
p2=p2->next;
return start2;
//////////////////////////SAVE NEW LIST//////////////////////////////////
void save (mg *start, mg *start2) {
mg *p, *p2;
FILE *f;
int n;
char filename[50];
printf("Enter path to file to write (ex. C:\\file.txt):\n");
scanf("%s",filename);
if((f=fopen(filename, "w"))==NULL) {
printf("Invalid filename or file is corrupt! Press any key...");
goto end;
p=start;
while(p->next!=NULL) {
fprintf(f, "%d\n", p->num);
fprintf(f, "%s\n", p->adr.city);
fprintf(f, "%s\n", p->adr.str);
fprintf(f, "%d\n", p->adr.dom);
fprintf(f, "%s\n", p->pro[n].name);
printf(f, "%d\n", p->pro[n].price);
fprintf(f, "%s\n", p->pro[n].time);
p=p->next;
fprintf(f, "---------------\n");
p2=start2;
fprintf(f, "%d\n", p2->num);
fprintf(f, "%s\n", p2->adr.city);
fprintf(f, "%s\n", p2->adr.str);
fprintf(f, "%d\n", p2->adr.dom);
fprintf(f, "%s\n", p2->pro[n].name);
fprintf(f, "%d\n", p2->pro[n].price);
fprintf(f, "%s\n", p2->pro[n].time);
fclose(f);
printf("File created succesfully! Press any key...");
end:
////////////////////////////CREATING NEW LIST//////////////////////////////
mg *newlist (mg *start) {
mg *p, *p2, *start2, *last2;
char prod[20];
int np, k=0, sump=0, n, count=0;
p2=last2=start2=NULL;
printf("Enter product's name: ");
scanf("%s", prod);
count++;
if (strcmp(p->pro[n].name, prod)==0) {
np=n;
sump=p->pro[n].price+sump;
else { k++; }
if (k==5*count) {
printf("There is no such product. Press any key...");
if(p->pro[np].price > (sump/count))
if ((p->pro[np].price - (sump/count)) > ((sump/count)/10)) {
p2=(mg*)malloc(sizeof(mg));
p2->num=p->num;
strcpy(p2->adr.city,p->adr.city);
strcpy(p2->adr.str, p->adr.str);
p2->adr.dom=p->adr.dom;
strcpy(p2->pro[n].name, p->pro[n].name);
p2->pro[n].price=p->pro[n].price;
strcpy(p2->pro[n].time,p->pro[n].time);
p2->prev=last2;
p2->next=NULL;
if(last2!=NULL)
last2->next=p2;
last2=p2;
if(start2==NULL) start2=last2;
printf("New list created succesfully! Press any key...");
/////////////////////////MAIN FUNCTION////////////////////////////////
void main() {
mg *start, *start2, *last;
int i,n, newn,t=0;
char ans;
for (i=1;i<2;) {
printf("====================MENU=====================\n");
printf("1. Open file\n");
printf("2. Print list of markets\n");
printf("3. Create a new list\n");
printf("4. Print new list of markets\n");
printf("5. Save new list\n");
printf("6. Exit\n\n");
printf("Press 1-6 key. Any other key will exit program");
gotoxy(1, 20);
printf("===============COURSE PROJECT=================\nStudent: Saushkin Pavel Nikolaevich. Group: CBC-31. MIEM 2008");
ans=getch();
switch(ans) {
case '1': {
start=open(last);
if(start!=NULL) t=1;
else if(start->num > 1000 || start->num < 1) {
printf("(!) Error of reading file! Incapable data type! Press any key...");
break;
case '2': {
if(t==0) goto err1;
print(start);
case '3': {
start2=newlist(start);
t=2;
case '4': {
if(t==0) goto err1; else if (t==1) goto err2;
printnew(start2);
break; }
case '5': {
if(t==0) {
err1:
printf("You must open a file! Press any key...");
} else if (t==1) {
err2:
printf("You must create a new list! Press any key...");
save(start, start2);
default: { i=3; }
8. Тестовые примеры
Содержимое исходного файла (in.dat):
/* Начало файла */
25
Moscow
Lenina
14
butter
17
12.05.08
meat
19
22.07.09
milk
17.03.08
eggs
47
07.08.08
juice
12
24.11.08
756
Minsk
Zhukova
52
07.04.08
21
29.02.09
23
01.11.09
33
09.10.08
27.08.08
666
Kiev
Gagarina
22
29
26.02.09
26.07.08
56
31.10.08
16
02.05.08
748
Petersburg
Pavlovskaya
62
30
19.08.08
27
27.08.09
10.03.08
31
09.08.08
30.11.08
Volgograd
Potemkina
57
34
10.07.08
27.03.08
38
13.02.08
16.05.08
/* Конец файла
Работа программы (Пример №1):
Страницы: 1, 2, 3, 4