5. Структура программы
main - главная программа, содержащая меню, из которого осуществляется вызов всех остальных подпрограмм.
выбрали пункт меню №1 – запускается подпрограмма open -подпрограмма чтения записей из файла;
выбрали пункт меню №2 - запускается подпрограмма print – подпрограмма вывода записей на экран выбрали пункт меню №3 - запускается подпрограмма newlist – подпрограмма выполняет обработку списка выбрали пункт меню №4 - запускается подпрограмма printnew – подпрограмма вывода новых записей на экран.
выбрали пункт меню №5 - запускается подпрограмма save – подпрограмма сохранения результата в файл.
выбрали пункт меню №6 – выход из программы.
6. Описание алгоритма программы
Схема 1 - Main
Схема 2 - Функция open
Схема 3 - Функция print
Схема 4 - Функция printnew
Схема 5 - Функция newlist
Схема 6 - Функция 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; }
}
}
... . 00147-01 9001-1 расширении количества примитивов расширяется список возможных дисциплин, которые могут быть заложены в систему. Разрабатываемая система предназначается для дисциплин "Компьютерная графика" и "Системы искусственного интеллекта", а также для близких с ними дисциплин. Использование одного и того же набора примитивов для создания курсов по указанным дисциплинам приведет к ...
... ; технологическая функция имеет подфункции экономии учебного времени и учебного материала, устранения его дублирования и т.д. ГЛАВА 4. СОДЕРЖАНИЕ ИСНТРУМЕНТАЛЬНО-МЕТОДОЛОГИЧЕСКОГО ОБЕСПЕЧЕНИЯ ПЕДАГОГИЧЕСКОЙ ИНТЕГРАЦИИ 4.1. Типология интегративно-педагогического исследования В связи с поднимаемой в данном параграфе проблемой большой интерес вызывает монография В.М.Полонского "Оценки ...
... входят в деятельность работников, учитывая специфику и особенности ОАО АК СБ РФ Ростовского отделения сберегательного банка 5221. Определяется роль и стратегии совместной деятельности руководства, персонала и организационного консультанта; происходит обучающая деятельность в процессе развития и формирования корпоративной культуры банковской организации. 7. Обученная технологиям организационного ...
... » объединение, в котором и количество предприятий-участников, и их объединения само организуются в процессе функционирования на основе нормальной рыночной конкуренции. В Приложении 2.2. приводится конкретная процедура формирования графа единичного организационно-экономического преобразования предприятий отрасли лесоперерабатывающей промышленности в Архангельской области. Организация этой ...
0 комментариев