рефераты рефераты
Главная страница > Курсовая работа: Динамическое формирование и преобразование списков и структур  
Курсовая работа: Динамическое формирование и преобразование списков и структур
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Динамическое формирование и преобразование списков и структур

goto end;

}

else {

while (!feof(f)) {

p=(mg*)malloc(sizeof(mg));

scanf(f, "%d", &(p->num));

fscanf(f, "%s", p->adr.city);

fscanf(f, "%s", p->adr.str);

fscanf(f, "%d", &(p->adr.dom));

for(n=0;n<5;n++) {

fscanf(f, "%s", p->pro[n].name);

fscanf(f, "%d", &(p->pro[n].price));

fscanf(f, "%s", p->pro[n].time);

}

p->prev=last;

p->next=NULL;

if(last!=NULL)

last->next=p;

last=p;

if(start==NULL) start=last;

}

fclose(f);

printf("File readed succesfully! Press any key...");

getch();

}

end:

return start;

}

//////////////////////PRINT OLD LIST ON SCREEN/////////////////////////////

void *print (mg *start) {

int n;

mg *p=start;

while(p->next!=NULL) {

clrscr();

printf("\nMAGAZINE #%d", p->num);

printf("\n Address");

printf("\n   City: %s", p->adr.city);

printf("\n Street: %s", p->adr.str);

printf("\n  House: %d", p->adr.dom);

printf("\nProducts");

for(n=0;n<5;n++) {

printf("\n %d)", n+1);

printf("\n  Name: %s", p->pro[n].name);

printf("\n Price: %d", p->pro[n].price);

printf("\n  Time: %s", p->pro[n].time);

printf("\n");

}

printf("\n\nAny key to next record...");

getch();

p=p->next;

}

return start;

}

///////////////////////////PRINT NEW LIST ON SCREEN//////////////////////////

void *printnew (mg *start2) {

int n;

mg *p2=start2;

clrscr();

while(p2!=NULL) {

clrscr();

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];

clrscr();

printf("Enter path to file to write (ex. C:\\file.txt):\n");

scanf("%s",filename);

if((f=fopen(filename, "w"))==NULL) {

clrscr();

printf("Invalid filename or file is corrupt! Press any key...");

getch();

goto end;

}

p=start;

while(p->next!=NULL) {

clrscr();

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);

for(n=0;n<5;n++) {

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;

while(p2!=NULL) {

clrscr();

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);

for(n=0;n<5;n++) {

fprintf(f, "%s\n", p2->pro[n].name);

fprintf(f, "%d\n", p2->pro[n].price);

fprintf(f, "%s\n", p2->pro[n].time);

}

p2=p2->next;

}

fclose(f);

printf("File created succesfully! Press any key...");

getch();

end:

}

////////////////////////////CREATING NEW LIST//////////////////////////////

mg *newlist (mg *start) {

mg *p, *p2, *start2, *last2;

FILE *f;

char prod[20];

int np, k=0, sump=0, n, count=0;

p2=last2=start2=NULL;

clrscr();

printf("Enter product's name: ");

scanf("%s", prod);

p=start;

while(p->next!=NULL) {

count++;

for(n=0;n<5;n++) {

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...");

getch();

goto end;

}

p=p->next;

}

p=start;

while(p->next!=NULL) {

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;

for(n=0;n<5;n++) {

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;

p2=p2->next;

}

p=p->next;

}

printf("New list created succesfully! Press any key...");

getch();

end:

return start2;

}

/////////////////////////MAIN FUNCTION////////////////////////////////

void main() {

mg *start, *start2, *last;

int i,n, newn,t=0;

char ans;

clrscr();

for (i=1;i<2;) {

clrscr();

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) {

clrscr();

printf("(!) Error of reading file! Incapable data type! Press any key...");

getch();

break;

}

break;

}

case '2': {

if(t==0) goto err1;

print(start);

break;

}

case '3': {

if(t==0) goto err1;

start2=newlist(start);

t=2;

break;

}

case '4': {

if(t==0) goto err1; else if (t==1) goto err2;

printnew(start2);

break; }

case '5': {

if(t==0) {

err1:

clrscr();

printf("You must open a file! Press any key...");

getch();

break;

} else if (t==1) {

err2:

clrscr();

printf("You must create a new list! Press any key...");

getch();

break;

}

save(start, start2);

break;

}

default: { i=3; }

}

}


8.  Тестовые примеры

Содержимое исходного файла (in.dat):

/* Начало файла */

25

Moscow

Lenina

14

butter

17

12.05.08

meat

19

22.07.09

milk

25

17.03.08

eggs

47

07.08.08

juice

12

24.11.08

756

Minsk

Zhukova

52

butter

19

07.04.08

meat

21

29.02.09

milk

23

01.11.09

eggs

33

09.10.08

juice

14

27.08.08

666

Kiev

Gagarina

47

butter

22

12.05.08

meat

29

26.02.09

milk

22

26.07.08

eggs

56

31.10.08

juice

16

02.05.08

748

Petersburg

Pavlovskaya

62

butter

30

19.08.08

meat

27

27.08.09

milk

17

10.03.08

eggs

31

09.08.08

juice

19

30.11.08

33

Volgograd

Potemkina

57

butter

34

10.07.08

meat

29

27.08.09

milk

19

27.03.08

eggs

38

13.02.08

juice

14

16.05.08

/* Конец файла

Работа программы (Пример №1):

1. Open file

2. Print list of markets

3. Create a new list

4. Print new list of markets

5. Save new list

6. Exit

Выбранный пункт меню: 1

Enter path to file to open (ex. C:\\file.txt):

Вводим: d:\in.dat

*File readed successfully! Press any key…*

Страницы: 1, 2, 3, 4

рефераты
Новости