Синтаксические ошибки в программе
Вот то что я переписал с книги А. Нейбауэр. Моя первая программа на C/C++ :
Код:
#include "stdio.h"
#define FILENAME "Cdfile"
#define TEMPFILE "Temp"
#define MAX 20
FILE *fp, *tp, *printer;
struct CD
{
char name[20];
char description[40];
char category[12];
float cost;
int number;
} disc;
int slots[MAX];
int count;
main()
{
char select;
do
{
puts(" Ìîÿ êîëëåêöèÿ êîìïàêò-äèñêîâ\n");
puts("1 Äîáàâèòü êàðòî÷êó\n");
puts("2 Óäàëèòü êàðòî÷êó\n");
puts("3 Ðåäàêòèðîâàòü ñîäåðæèìîå êàðòî÷êè\n");
puts("4 Èçìåíèòü íîìåð ï/ï\n");
puts("5 Ñîðòèðîâêà êàðòî÷åê\n");
puts("6 Íàéòè êàðòî÷êó\n");
puts("7 Âûâåñòè íà ïå÷àòü\n");
puts("8 Âûéòè èç ïðîãðàììû\n");
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);
}
addcd()
{
int pause;
if (count >= MAX)
{
puts("Ê ñîæàëåíèþ, ñâîáîäíûõ ÿ÷ååê íåò\n");
pause = getchar();
return;
}
if ((fp = fopen(FILENAME, "a")) == NULL)
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n", FILENAME);
exit();
}
getslot()
{
int index, flag, pause;
do
{
flag = 0;
printf("Ââåäèòå íîìåð ÿ÷åéêè: ");
scanf("%d", &disc.number);
for (index = 0; index < count; index++)
{
if (slots[index] == disc.number)
{
printf("Ê ñîæàëåíèþ, ÿ÷åéêà óæå çàíÿòà, ïîïðîáóéòå äðóãóþ\n");
flag = 1;
}
}
}
while (disc.number < 1 || disc.number > MAX || flag == 1);
count++;
slots[count] = disc.number;
return;
}
delcd();
{
if (fp = fopen(FILENAME, "r")) == NULL)
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n", FILENAME);
exit();
}
if ((tp = fopen(tempfile, "w")) == NULL)
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n", tempfile);
fclose(fp);
exit();
}
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);
puts("\nÄèñê ñ òàêèì íàçâàíèåì íå íàéäåí");
pause = getchar();
if (fp = fopen(FILENAME, "w")) == NULL)
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n", FILENAME);
exit();
}
if ((tp = fopen(TEMPFILE, "r")) == NULL)
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n", tempfile);
fclose(fp);
exit();
}
while (fread(&disc, sizeof(disc), 1, tp) == 1)
fwrite(&disc, sizeof(disc), 1, fp);
fclose(fp);
fclose(tp);
tp = fopen(tempfile, "w");
fclose(tp);
chcd()
{
openrw();
puts("Ââåäèòå íàçâàíèå äèñêà: ");
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.description);
printf("Ââåäèòå êàòåãîðèþ: ");
gets(disc.category);
printf("Ââåäèòå öåíó: ");
scanf("%f", &disc.cost);
if (count >= MAX)
{
puts("Íåâîçìîæíî ââåñòè íîìåð ÿ÷åéêè\n");
pause = getchar();
}
else
{
getslot();
}
printf("Ââåäèòå íàçâàíèå äèñêà: ");
gets(disc.name);
if (strlen(name) > 0)
strcpy(disc.name, name);
showdisc()
{
printf("Íàçâàíèå %s\n", disc.name);
printf("Îïèñàíèå %s\n", disc.description);
printf("Êàòåãîðèÿ %s\n", disc.category);
printf("Öåíà %6.2f\n", disc.cost);
printf("Íîìåð ï/ï %d\n", disc.number);
puts("\n\n");
return;
}
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, fp);
fclose(fp);
fclose(tp);
}
getslots();
return;
}
chloc()
{
char chname[20];
char fflag;
int pause;
fflag='n';
if(count>>=MAX)
{
puts("Ê ñîæàëåíèþ ñâîáîäíûõ ÿ÷ååê íåò\n");
pause=getchar();
return;
}
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Íîâûé íîìåð ÿ÷åéêè\n");
getslot();
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, fp);
fclose(fp);
fclose(tp);
}
getslots();
return;
}
locate()
{
char name[20];
char fflag, pause;
fflag='n';
if((fp = fopen(FILENAME,"r")) == NULL)
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n",FILENAME);
exit();
}
puts("Ïîèñê äèñêà\n");
printf("Ââåäèòå íàçâàíèå äèñêà: ");
gets(name);
while(fread(&disc, sizeof(disc), 1, fp)==1)
{
if(strcmp(disc.name,name)==0)
{
fflag='y';
showdisc();
printf("Äëÿ ïðîäîëæåíèÿ íàæìèòå Enter");
pause=getchar();
putchar('\n');
}
}
fclose(fp);
fclose(tp);
if(fflag=='n')
nofind();
return;
}
plist()
{
if((fp = fopen(FILENAME,"r")) == NULL)
{
printf("Íåâîçìîæíî îòêðûòü ôàéë %s\n",FILENAME);
exit();
}
if((printer = fopen("prn","w")) == NULL)
{
printf("Ïå÷àòàþùåå óñòðîéñòâî íå ãîòîâî ê ðàáîòå\n");
fclose(fp);
exit();
}
while(fread(&disc, sizeof(disc), 1, fp)==1)
{
fprintf(printer,"Íàçâàíèå:%s\n",disc.name);
fprintf(printer,"Îïèñàíèå:%s\n",disc.description);
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;
}
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);
exit();
}
while(fread(&disc, sizeof(disc), 1, fp)==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++)
{
for (loop2 = 0; loop2 < count; loop2++)
if (temp[loop2].number == loop1)
{
fwrite(&temp[loop2], sizeof(temp[loop2]), 1, fp);
endloop++;
}
if (endloop == count)
break;
Подправил все что мог и знаю, и вот какие у ошибки выдал компилатор (Dev-C++)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp: In function `int main()':
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:37: error: `addcd' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:37: error: (Each undeclared identifier is reported only once for each function it appears in.)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:40: error: `delcd' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:43: error: `chcd' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:46: error: `chloc' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:49: error: `sort' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:52: error: `locate' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:55: error: `plist' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp: At global scope:
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:68: error: ISO C++ forbids declaration of `addcd' with no type
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp: In function `int addcd()':
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:68: error: `int addcd()' used prior to declaration
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:74: error: return-statement with no value, in function returning 'int'
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:79: error: `exit' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:81: error: `getslot' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:82: error: expected `;' before '{' token
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:104: error: `delcd' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:106: error: expected primary-expression before '==' token
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:106: error: expected `;' before ')' token
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:111: error: `tempfile' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:118: error: `delname' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:121: error: `strcmp' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:124: error: `fflag' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:130: error: expected primary-expression before '==' token
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:130: error: expected `;' before ')' token
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:147: error: `chcd' undeclared (first use this function)
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:148: error: expected `;' before '{' token
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:348: error: expected `}' at end of input
C:\Users\Àäìèíèñòðàòîð\Documents\Áåçûìÿííûé3.cpp:348: error: expected `}' at end of input
Âûïîëíåíèå çàâåðøåíî - на это можите на обращать внимание, это прости кирилица.
Если кому ни лень, то можите откомпилировать программу у себя.
Порчитал всю книгу и так и не понял где взялась функция nofind()
|