Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
C/C++ - Синтаксические ошибки в программе
SS3 SS3 вне форума

Аватара для SS3

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


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

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


Изменения
Автор: Drongo
Дата: 09-03-2009
Описание: Тег [code]...[/code]
Вот то что я переписал с книги А. Нейбауэр. Моя первая программа на 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()

Отправлено: 18:38, 09-03-2009

 

Аватара для Drongo

Будем жить, Маэстро...


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

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


SS3, Функции
Цитата SS3:
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) »
Не объявлены, нет прототипов.
Помоему там ещё скобок '}' нехватает.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


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



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

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

SS3 SS3 вне форума Автор темы

Аватара для SS3

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


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

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


Я єто знаю и без тебя, Drongo, знаю.
Меня интересует как убрать єти ошибки, по книжным примерам все правильно, может тут мне подскажут как устранить эти неполадки.

-------
http://img49.imageshack.us/img49/6761/84449733.gif


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

SS3 SS3 вне форума Автор темы

Аватара для SS3

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


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

Профиль | Отправить 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 ==========

-------
http://img49.imageshack.us/img49/6761/84449733.gif


Последний раз редактировалось Drongo, 09-03-2009 в 21:34. Причина: Используйте тег!!!! На панели инструментов знак - #


Отправлено: 20:26, 09-03-2009 | #4


Аватара для Drongo

Будем жить, Маэстро...


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

Профиль | Сайт | Отправить 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);
}

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Последний раз редактировалось Drongo, 09-03-2009 в 21:52. Причина: Поправил и исправил...

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:26, 09-03-2009 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход