Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Прикладная программа

Ответить
Настройки темы
Assm - Прикладная программа
SS3 SS3 вне форума

Аватара для SS3

Пользователь


Сообщения: 134
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот нашел интересный исходный код программы (это объяснение) а вот полный листинг программы. Вот только одна загвоздка то что написано в объяснении не совсем соответствует с полным листингом. Ну и черт с ним подумал я, а зря.
Скопировал я листинг в Dev-C++, меня зразу удивило как было написано код:много синтаксических ошибок, ну их легко исправить.
Вот мой листинг после исправлений:
Код: Выделить весь код
#include <iostream>
#include "stdio.h"
#define Filename "CDfile"
#define TEMPFILE "TEMP"
#define MAX 20
using namespace std;
int addcd();
int delcd();
int chcd();
int chloc();
int sort();
int plist();
int locate();
int showdisc();
int getslots();
FILE *fp, *tp,*printer;
struct CD
{
    char name[20];
    char descriprion[40];
    char category[12];
    float cost;
    int number;
}
disc;
int slots[MAX];
int count;

int main()
{
char select;
do
{
puts("Ìîÿ êîëëåêöèÿ êîìïàêò-äèñêîâ");
puts("1- Äîáàâèòü êàðòî÷êó");
puts("2- Óäàëèòü êàðòî÷êó");
puts("3- Ðåäàêòèðîâàòü ñîæåðæèìîå êàðòî÷êè");
puts("4- Èçìåíèòü íîìåð ÿ÷åéêè");
puts("5-Ñîðòèðîâêà êàðòî÷åê");
puts("6- íàéòè êàðòî÷êó");
puts("7- âûâåñòè íà ïå÷àòü");
puts("8- âûéòè èç ïðîãðàììû");
printf("Ïîæàëóéñòà, ââåäèòå ñâîé âûáîð");
select=getchar();
putchar('\n');
switch(select)
{
case '1':
addcd();
break;
case '2':
delcd();
break;
case '3':
chcd();
break;
case '4':
chloc();
break;
case '5':
sort();
break;
case '6':
locate();
break;
case '7':
plist();
break;
case '8':
break;
default:
puts("Îøèáêà, ïîâòîðèòå ââîä\n\n");
}
}
while (select!='8');
return(0);
}

int addcd()
{
int pause;
if( count >=MAX)
{
puts("Ê ñîæàëåíèþ ñâîáîäíûõ ÿ÷ååê íåò \n");
pause=getchar();
return(0);
}
if((fp=fopen(FILENAME,"a"))=NULL)
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n",FILENAME);
exit();
}
puts("\n");
printf("Ââåäèòå íàçâàíèå äèñêà: ");
gets(disc.name);
printf("Ââåäèòå îïèñàíèå:");
gets(disc.descriprion);
printf("Ââåäèòå êàòåãîðèþ:");
gets(disc.category);
printf("Ââåäèòå öèíó:");
scanf("%f",&disc.cost);
int getslots();
fwrite(&disc,sizeof(disc),1,fp);
fclose(fp);
getslots();
return (0);
}

int delcd()
{
char delname[20];
char fflag;
fflag='n';
openrw();
puts("Óäàëåíèå èíôîðìàöèè î äèñêå \n");
printf("Ââåäèòå íàçâàíèå äèñêà: ");
gets(delname);
while(fread(&disc,sizeof(disc),1,fp)==1)
{
if(strcmp(disc.name,delname)!=0)
fwrite(&disc,sizeof(disc),1,tp);
else
fflag='y';
}
fclose(fp);
fclose(tp);
if(fflag=='n');
// äîëæíî ñòîÿòü nofind()
else
{
openwr();
while(fread(&disc,sizeof(disc),1,tp)==1)
fwrite(&disc,sizeof(disc),1,fp);
fclose(fp);
fclose(tp);
}
int getslots();
return (0);
}

int chcd()
{
char chname[20];
char fflag;
int pause;
fflag='n';
openrw();
puts("Ðåäàêòèðîâàíèå ñâåäåíèé î äèñêå\n");
printf(" Ââåäèòå íàçâàíèå äèñêà: ");
gets(chname);
while(fread(&disc,sizeof(disc),1,fp)==1)
{
if(strcmp(disc.name,chname)!=0)
fwrite(&disc,sizeof(disc),1,tp);
else
{
fflag='y';
puts("Òåêóùàÿ èíôîðìàöèÿ \n");
showdisc();
puts("Íîâàÿ èíôîðìàöèÿ \n");
printf("Ââåäèòå íàçâàíèå äèñêà: ");
gets(disc.name);
printf("Ââåäèòå îïèñàíèå:");
gets(disc.descriprion);
printf("Ââåäèòå êàòåãîðèþ :");
gets(disc.category);
printf("Ââåäèòå öåíó: ");
scanf("%f",&disc.cost);
if(count>=MAX)
{
puts("Ê ñîæàëåíèþ ñâîáîäíûõ ÿ÷ååê íåò \n");
pause=getchar();
}
else
{
int getslots();
}
fwrite(&disc,sizeof(disc),1,tp);
}
}
fclose(fp);
fclose(tp);
if(fflag=='n')
//nofind();
else
{
openwr();
while(fread(&disc,sizeof(disc),1,tp)==1);
fwrite(&disc,sizeof(disc),1,tp);
fclose(fp);
fclose(tp);
}
getslots();
return (0);
}

int chloc()
{
char chname[20];
char fflag;
int pause;
fflag='n';
if(count>>=MAX)
{
puts("Ê ñîæàëåíèþ ñâîáîäíûõ ÿ÷ååê íåò \n");
pause=getchar();
return (0);
}
openwr();
puts("Èçìåíåíèå íîìåðà ÿ÷åéêè \n");
printf("Ââåäèòå íàçâàíèå äèñêà: ");
gets(chname);
while(fread(&disc,sizeof(disc),1,fp)==1)
{
if(strcmp(disc.name,chname)!=0)
fwrite(&disc,sizeof(disc),1,tp);
else
{
fflag='y';
puts("Òåêóùàÿ èíôîðìàöèÿ \n");
int showdisc();
puts("\n Íîâûé íîìåð ÿ÷åéêè \n");
int getslots();
fwrite(&disc,sizeof(disc),1,tp);
}
}
fclose(fp);
fclose(tp);
if(fflag=='n');
//nofind();
else
{
openwr();
while(fread(&disc,sizeof(disc),1,tp)==1)
fwrite(&disc,sizeof(disc),1,tp);
fclose(fp);
fclose(tp);
}
int getslots();
return (0);
}

int locate()
{
char name[20];
char fflag,pause;
fflag='n';
if((fp=fopen(FILENAME,"r"))=NULL);
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n",FILENAME);
exit();
}
puts("Ïîèñê äèñêà");
printf("ââåäèòå íàçâàíèå äèñêà:");
gets(name);
while(fread(&disc,sizeof(disc),1,tp)==1)
{
if(strcmp(disc.name,name)==0)
{
fflag='y';
int showdisc();
printf("Äëÿ ïðîäîëæåíèÿ íàæìèòå ENTER");
pause=getchar();
putchar('\n');
}
}
fclose(fp);
fclose(tp);
if(fflag=='n');
//nofind();
return (0);
}
int plist()
{
if((fp=fopen(FILENAME,"r"))=NULL)
{
printf("Íåâîçìîæíî îòêðûòü ôàéë%s\n",FILENAME);
int exit();
}
if((printer=fopen("prn","w"))==NULL)
{
printf("Ïå÷àòàþùèå óñòðîéñâî íå ãîòîâî ê ðàáîòå\n");
fclose(fp);
int exit();
}
while(fread(&disc,sizeof(disc),1,tp)==1)
{
fprintf(printer,"Íàçâàíèå: %S\n",disc.name);
fprintf(printer,"Îïèñàíèå: %S\n",disc.descriprion);
fprintf(printer,"Êàòåãîðèÿ: %S\n",disc.category);
fprintf(printer,"Öåíà %6,2f\n",disc.cost);
fprintf(printer,"Íîìåð ï/ï: %d\n",disc.number);
fprintf(printer,"\n\n");
fclose(printer);
fclose(fp);
return (0);
}

int sort();
{
struct CD temp[MAX];
int index, loop1,loop2,endloop;
loop1=0;
loop2=0;
endloop=0;
index=0;
if((fp=fopen(FILENAME,"r"))==NULL);
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n",FILENAME);
int exit();
}
while(fread(&disc,sizeof(disc),1,tp)==1)
{
temp[index]=disc;
index++;
}
fclose(fp);
if((fp=fopen(FILENAME,"w"))==NULL)
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n",FILENAME);
exit();
}
for (loop1 = 1; loop1 < MAX+1; loop1++);
count++;
slots[count]=disc.number;
return (0);
}

int getslots();
{
int index;
index=0;
count=0;
if((fp=fopen(FILENAME,"r"))!=NULL)
{
while(fread(&disc,sizeof(disc),1,tp)==1)
{
slots[index]=disc.number;
index++;
count++;
}
fclose(fp);
}
}
}
Потом компилирую и получаю ошибки:
Код: Выделить весь код
Êîìïèëÿòîð: Default compiler
Âûïîëíåíèå  g++.exe...
g++.exe "C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp" -o "C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.exe"    -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include"  -I"C:\Dev-Cpp\include\c++\3.4.2\backward"  -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32"  -I"C:\Dev-Cpp\include\c++\3.4.2"  -I"C:\Dev-Cpp\include"   -L"C:\Dev-Cpp\lib" 
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp: In function `int addcd()':
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:82: error: `count' undeclared (first use this function)
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:82: error: (Each undeclared identifier is reported only once for each function it appears in.)

C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:88: error: `FILENAME' undeclared (first use this function)
C:/Dev-Cpp/include/stdlib.h:351: error: too few arguments to function `void exit(int)'
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:91: error: at this point in file

C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp: In function `int delcd()':
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:114: error: `openrw' undeclared (first use this function)
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:131: error: `openwr' undeclared (first use this function)

C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp: In function `int chcd()':
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:147: error: `openrw' undeclared (first use this function)
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:169: error: `count' undeclared (first use this function)

C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:185: error: expected primary-expression before "else"
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:185: error: expected `;' before "else"

C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp: In function `int chloc()':
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:203: error: `count' undeclared (first use this function)
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:209: error: `openwr' undeclared (first use this function)
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp: In function `int locate()':
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:248: error: `FILENAME' undeclared (first use this function)
C:/Dev-Cpp/include/stdlib.h:351: error: too few arguments to function `void exit(int)'
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:251: error: at this point in file
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp: In function `int plist()':
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:275: error: `FILENAME' undeclared (first use this function)
C:/Dev-Cpp/include/stdlib.h:351: error: too few arguments to function `void exit(int)'
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:321: error: at this point in file
C:\UsersÀäìèíèñòðàòîð\DocumentsÁåçûìÿííûé1.cpp:324: error: `count' undeclared (first use this function)

Âûïîëíåíèå çàâåðøåíî
Только не могу понять причем тут `count' undeclared (first use this function), ведь эта переменная объявлена как глобальная а FILENAME как константа

Отправлено: 01:04, 10-03-2009

 

Аватара для Alan85

Забанен


Сообщения: 463
Благодарности: 91

Профиль | Цитировать


Походу компилятор вставляет функцию вместо его прототипа а прототип определен раньше переменной. Попробуй поменяй - мож получится

Отправлено: 19:16, 10-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


вот, что выдал bcc32:
строка 1: нафиг оно? компилеру после этого кажется что используешь шаблон std::count, который заявлен, но не определён.
строка 4: FILENAME большими буквами
строка 92: вместо =NULL надо ==NULL
строка 95: для exit() нужно #include <process.h>
строки 118, 124, 135, 151, 157: openrw функции нет (и не знаю, что это такое), для strcmp нужно #include <string.h>
строка 245: зачем нужна pause, если не секрет?
строка 279: опять пытаемся присвоить чёто результату функции (надо ==NULL)
строка хз: endloop, loop2 - для чего переменные?
функция plist(): где-то не хватает `}`
функция sort(): что понимается под кострукцией `int exit();`? объявление прототипа функции exit()?

и совет: ПОПЫТАЙСЯ ВНИКНУТЬ В КОД, по твоей ссылке всё грамотно разжёвано, сразу поймёшь, где чего не хватает

Отправлено: 20:19, 10-03-2009 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Прикладная программа

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прикладная информатика в экономике mxmstrnt Флейм 4 06-04-2009 20:33
Нужна программа, определяющая, каким инсталлятором запакована программа yaryar Программное обеспечение Windows 3 24-06-2008 10:56
программа Rustem Вебмастеру 7 07-05-2008 11:37
программа на с++ gh6 Программирование и базы данных 4 24-10-2006 20:43
Программа spawn ivank Программное обеспечение Linux и FreeBSD 13 11-09-2003 18:25




 
Переход