5.  Структура программы

main - главная программа, содержащая меню, из которого осуществляется вызов всех остальных подпрограмм.

выбрали пункт меню №1 – запускается подпрограмма open -подпрограмма чтения записей из файла;

выбрали пункт меню №2 - запускается подпрограмма print – подпрограмма вывода записей на экран выбрали пункт меню №3 - запускается подпрограмма newlist – подпрограмма выполняет обработку списка выбрали пункт меню №4 - запускается подпрограмма printnew – подпрограмма вывода новых записей на экран.

выбрали пункт меню №5 - запускается подпрограмма save – подпрограмма сохранения результата в файл.

выбрали пункт меню №6 – выход из программы.


6.  Описание алгоритма программы

Схема 1 - Main

Описание: main


Схема 2 - Функция open

Описание: open


Схема 3 - Функция print

Описание: print


Схема 4 - Функция printnew

Описание: print


Схема 5 - Функция newlist

Описание: newlist


Схема 6 - Функция save

Описание: save


7.  Текст программы

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <alloc.h>

#include <io.h>

#define mg struct mg

#define ad struct ad

#define pr struct pr

pr {

char name[20];

int price;

char time[20];

};

ad {

char city[20];

char str[20];

int dom;

};

mg {

int num;

ad adr;

pr pro[5];

mg *prev, *next;

};

///////////////////////////OPEN LIST FROM FILE///////////////////////////////

mg *open (mg *last) {

mg *p, *start;

FILE *f;

int n;

char filename[50];

start=NULL;

last=NULL;

clrscr();

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

scanf("%s", filename);

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

printf("(!) Invalid filename or file is missing! Press any key to return to menu.");

getch();

} else

if(filelength(fileno(f))==0) {

clrscr();

printf("File is empty! Press any key...");

getch();

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

}

}



Информация о работе «Динамическое формирование и преобразование списков и структур»
Раздел: Информатика, программирование
Количество знаков с пробелами: 19203
Количество таблиц: 1
Количество изображений: 7

Похожие работы

Скачать
114125
10
8

... . 00147-01 9001-1 расширении количества примитивов расширяется список возможных дисциплин, которые могут быть заложены в систему. Разрабатываемая система предназначается для дисциплин "Компьютерная графика" и "Системы искусственного интеллекта", а также для близких с ними дисциплин. Использование одного и того же набора примитивов для создания курсов по указанным дисциплинам приведет к ...

Скачать
790698
3
0

... ; технологическая функция имеет подфункции экономии учебного времени и учебного материала, устранения его дублирования и т.д. ГЛАВА 4. СОДЕРЖАНИЕ ИСНТРУМЕНТАЛЬНО-МЕТОДОЛОГИЧЕСКОГО ОБЕСПЕЧЕНИЯ ПЕДАГОГИЧЕСКОЙ ИНТЕГРАЦИИ 4.1. Типология интегративно-педагогического исследования В связи с поднимаемой в данном параграфе проблемой большой интерес вызывает монография В.М.Полонского "Оценки ...

Скачать
185151
13
3

... входят в деятельность работников, учитывая специфику и особенности ОАО АК СБ РФ Ростовского отделения сберегательного банка 5221. Определяется роль и стратегии совместной деятельности руководства, персонала и организационного консультанта; происходит обучающая деятельность в процессе развития и формирования корпоративной культуры банковской организации. 7. Обученная технологиям организационного ...

Скачать
190511
0
2

... » объединение, в котором и количество предприятий-участников, и их объединения само организуются в процессе функционирования на основе нормальной рыночной конкуренции. В Приложении 2.2. приводится конкретная процедура формирования графа единичного организационно-экономического преобразования предприятий отрасли лесоперерабатывающей промышленности в Архангельской области. Организация этой ...

0 комментариев


Наверх