|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Синтаксические ошибки в программе |
|
C/C++ - Синтаксические ошибки в программе
|
Пользователь Сообщения: 134 |
Профиль | Отправить PM | Цитировать
Вот то что я переписал с книги А. Нейбауэр. Моя первая программа на 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; 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() |
|
Отправлено: 18:38, 09-03-2009 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать SS3, Функции
Цитата SS3:
Помоему там ещё скобок '}' нехватает. |
|
------- Отправлено: 19:17, 09-03-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 134
|
Профиль | Отправить PM | Цитировать Я єто знаю и без тебя, Drongo, знаю.
Меня интересует как убрать єти ошибки, по книжным примерам все правильно, может тут мне подскажут как устранить эти неполадки. |
------- Отправлено: 19:56, 09-03-2009 | #3 |
Пользователь Сообщения: 134
|
Профиль | Отправить PM | Цитировать Вот я решил попробовать на простом примере:
// 13.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { Vvod(); return (0); } int Vvod() { char obl[10]; char repeat; do { puts("Введите название области"); gets(obl); puts("Продолжиь?[Y/N]"); repeat=getchar(); putchar('\n'); } while(repeat=='y'||repeat=='Y'); return (0); } 1>13.cpp 1>c:\users\администратор\documents\visual studio 2008\projects\13\13\13.cpp(10) : error C3861: Vvod: идентификатор не найден 1>Журнал построения был сохранен в "file://c:\Users\Администратор\Documents\Visual Studio 2008\Projects\13\13\Debug\BuildLog.htm" 1>13 - ошибок 1, предупреждений 0 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== |
------- Последний раз редактировалось Drongo, 09-03-2009 в 21:34. Причина: Используйте тег!!!! На панели инструментов знак - # Отправлено: 20:26, 09-03-2009 | #4 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата SS3:
... #include <iostream> using namespace std; int Vvod(); // Объявляй прототип функции перед её использованием int _tmain(int argc, _TCHAR* argv[]) { Vvod(); return (0); } // Описание функции ввода Vvod();------------------------ int Vvod() { char obl[10]; char repeat; do{ puts("Введите название области"); gets(obl); puts("Продолжиь?[Y/N]"); repeat=getchar(); putchar('\n'); } while(repeat=='y'||repeat=='Y'); return (0); } ... #include <iostream> using namespace std; int Vvod() { char obl[10]; char repeat; do{ puts("Введите название области"); gets(obl); puts("Продолжиь?[Y/N]"); repeat = getchar(); putchar('\n'); } while(repeat=='y'||repeat=='Y'); return (0); } int _tmain(int argc, _TCHAR* argv[]) { Vvod(); return (0); } |
||
------- Последний раз редактировалось Drongo, 09-03-2009 в 21:52. Причина: Поправил и исправил... Отправлено: 21:26, 09-03-2009 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Обращение к программе через API | poisonattack | Скриптовые языки администрирования Windows | 1 | 04-12-2009 11:17 | |
[решено] Открытие файла в программе | cra5h_ | AutoIt | 4 | 19-11-2009 15:39 | |
C/C++ - Доступ к выполняющейся программе. | Afon | Программирование и базы данных | 2 | 30-01-2009 14:15 | |
Установка - Графика в DOS программе | Pnfl | Microsoft Windows 2000/XP | 0 | 25-11-2007 20:33 | |
Ошибка в программе Spool32.exe | Guest | Microsoft Windows 95/98/Me (архив) | 1 | 19-03-2004 17:00 |
|