Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Непонятная ошибка  (Прочитано 12223 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Xander7
Гость
« : 05-01-2006 08:51 » 

Не пойму, чего хочет компилятор. У меня проект из 6 файлов
Нужно совершить поиск по цене(вводиться диапазон для поиска)
Код:
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include "s_emp.h"
#include "v&v.h"
#include "menu.h"
#include "exec.h"
void main(){
int Nachalo, Konec,mNumbers[5];
struct emp evil_massive[5];
while (1){
clrscr();
int menu();

switch (menu()) {
case 1 : clrscr();
for (int N=0;N<5;N++)
vvod(&evil_massive[N],N);
break;
case 2 : clrscr();
diap(Nachalo, Konec);
break;

case 3 : for (N=0;N<5;N++)
poisk(Nachalo,Konec,&evil_massive[N],N,&mNumbers[0]);
for (N=0;N<5;N++)
print_search(&mNumbers[N],&evil_massive[N]);
break;
case 4 : clrscr();
for (N=0;N<5;N++)
vivod(&evil_massive[N],N);
break;
case 0 : return;
}
}
}


#include <iostream.h>
#include <iomanip.h>
#include <string.h>
#include <conio.h>
#include "s_emp.h"
#include "v&v.h"
#include "menu.h"
#include "exec.h"

struct emp x_bizmas;
int menu()
{       clrscr();
int y;
cout<<"\n1.Dobavit knigu\n";
cout<<"2.Ukazanie diapazona dla poiska\n";
cout<<"3.Poisk po zadannomu diapazonu\n";
cout<<"4.Vivod\n";
cout<<"0.Vihod\n";
cin>>y;
cin.get();
return y;
}
void vvod(emp *x_bizmas,int n){
cout<<n<<"Vvedite nazvanie tovara: ";
cin.getline(x_bizmas->tovar,10);
cout<<n<<"Vvedite cenu tovara: ";
cin>>x_bizmas->cena;
cout<<n<<"Vvedite god vipuska: ";
cin>>x_bizmas->god_make;

}

void vivod(emp *x_bizmas,int n){
cout    <<n<<setw(5)
<<x_bizmas->tovar<<setw(5)
<<x_bizmas->cena<<setw(5)
<<x_bizmas->god_make;
getch();
}

void diap(int N_p,int N_k){
cout<<"\nVvedite nacalnoe znachenie ceni: ";
cin>>N_p;
cout<<"\nVvedite nac znach ceni: ";
cin>>N_k;
}
void poisk(int N_p,int N_k, emp *x_bizmas,int n,int* num){
if ((x_bizmas->cena>=N_p)&&(x_bizmas->cena<=N_k)){
 *num=n;
 num++;
  }
}
void print_search(int* num, emp *x_bizmas)
{
for (int n = *num;n<5;num++){
cout<<"Ostatochnaya stroka: ";
cout    <<n<<setw(5)
<<x_bizmas->tovar<<setw(5)
<<x_bizmas->cena<<setw(5)
<<x_bizmas->god_make;

}
getch();
}

#ifndef __menu__
#define __menu__
int menu();
#endif

#ifndef __s_emp__
#define __s_emp__
struct emp{
char tovar[10];
float cena;
int god_make;
};
#endif


#ifndef __v&v__
#define __v&v__
void vvod(emp *,int);
void vivod(emp *,int);
#endif

//ошибка здесь
#ifndef __exec__
#define __exec__
void diap (int, int);
void poisk (int, int, emp * , int, int* );
void print_search (int* , emp *);
#endif
//на void poisk (int, int, emp * , int, int* ); и void print_search (int* , emp *); пишет " expected ) "


Может,модуль не понимает указатель на структуру.
Кто знает, пишите! Бррр
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #1 : 05-01-2006 12:31 » 

Да уж - саму ошибку привести в цитате явно не судьба Жаль
Записан

А птичку нашу прошу не обижать!!!
Xander7
Гость
« Ответ #2 : 07-01-2006 19:40 » 

В смысле цытатой... Цытатой будет точно так же
Цитата
Expected )
Expected )
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 07-01-2006 19:51 » 

Гром вообше то не это имел ввиду. Повторить твою программу на чужой машине врядли удастся. Так как ты используеш собственные инклуды. Тексты инклудов не приводиш. Но хотя бы облегчи задачу отвечаюшему. Напиши какие ошибки и в какой строчке выдаёт компилятор. Тут не клуб экстрасенсов.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4 : 07-01-2006 20:08 » 

Странные на мой взгляд строки в твоей программе:
Код:
struct emp evil_massive[5]; 
Если ты объявляеш структуру как тип, то синтаксис чуть другой. Если ты уже определил ранее emp и хочеш объявить переменные. Тогда зачем нужно слово struct
Код:
int menu();
Зачем писать int когда вызываеш функцию.
Код:
switch (menu()) {
зачем затем повторно еше раз вызывать туже функцию.
Код:
case 0 : return;
На эту строчку компилятор должен отругаться. Так как при выходе из функции main ожидается какое то значение.
Код:
struct emp x_bizmas;
Повторно таже каша
Код:
#ifndef __exec__
#define __exec__
void diap (int, int);
void poisk (int, int, emp * , int, int* );
void print_search (int* , emp *);
#endif
Если это отдельный файл, то покажи пожайлуста, где у тебя опредено emp
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Xander7
Гость
« Ответ #5 : 08-01-2006 13:18 » 

Во первых,
Цитата
Странные на мой взгляд строки в твоей программе:

Код:
struct emp evil_massive[5];

В Си++ можна и не писать, а можно и писать, это в Си обязательно
Во вторых,
Цитата
int menu();
Зачем писать int когда вызываеш функцию.
у меня возвращается значение после ввода номера из меню, а потом в мейне свичом.
в третьих,
Цитата
case 0 : return;
На эту строчку компилятор должен отругаться. Так как при выходе из функции main ожидается какое то значение.
Зачем ругаться, ничего не возвращает, конец и все, эквивалентно return 0,но разници NULL.
В четвёртых,
Цитата
Гром вообше то не это имел ввиду. Повторить твою программу на чужой машине врядли удастся. Так как ты используеш собственные инклуды. Тексты инклудов не приводиш. Но хотя бы облегчи задачу отвечаюшему. Напиши какие ошибки и в какой строчке выдаёт компилятор. Тут не клуб экстрасенсов.
Я может, чего не понимаю , что для вас значит сие, но для меня вполне конкретно,
Код:
#ifndef __menu__
#define __menu__
int menu();
#endif

#ifndef __s_emp__
#define __s_emp__
struct emp{
char tovar[10];
float cena;
int god_make;
};
#endif


#ifndef __v&v__
#define __v&v__
void vvod(emp *,int);
void vivod(emp *,int);
#endif

//ошибка здесь
#ifndef __exec__
#define __exec__
void diap (int, int);
void poisk (int, int, emp * , int, int* );
void print_search (int* , emp *);
#endif
//на void poisk (int, int, emp * , int, int* ); и void print_search (int* , emp *); пишет " expected ) "
И наконец,добрались до сути,
Цитата
struct emp x_bizmas;
Повторно таже каша

Код:
#ifndef __exec__
#define __exec__
void diap (int, int);
void poisk (int, int, emp * , int, int* );
void print_search (int* , emp *);
#endif
Если это отдельный файл, то покажи пожайлуста, где у тебя опредено emp
Что я у вас и спрашивал, и ничего другого.Если он не обьявлен, то как его обьявить, если инклудом после директив, то не пашит, то же самое выдает. Если убить все модуля, а тупо подключить .срр где функции описаны,
то всё пашит, и никаких ретурнов Улыбаюсь А по другом обьявить не пойму как. Вот, собственно вопрос. Отлично
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #6 : 08-01-2006 13:53 » 

Странно, на многие твои фокусы у меня компилятор ругается (VC++6.0). Правда у меня стоит параноидальный уровень проверки синтаксиса. Но это все offtop.
По сушеству задачи. Сделай один базовый хэдэр и снеси в него все объявления структур, которые будут использоваться в нескольких модулях. Останется только подключать этот хэдэр.
Пример:
Basis.h
Код:
struct emp{
char tovar[10];
float cena;
int god_make;
};

В саоем модуле будеш подключать базовый хэдэр. Да кстати в модуле меню структуру надо будет удалить и также подключить базовый хэдэр.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #7 : 08-01-2006 17:25 » 

"int menu();" не вызов фукции! а вызывается она в самом case.

попробуй
Код:
#ifndef __exec__
#define __exec__
#include "s_emp.h"

void diap (int, int);
void poisk (int, int, emp * , int, int* );
void print_search (int* , emp *);
#endif

а в s_emp.h  добавить что-то типа
Код:
extern "C" struct emp;
« Последнее редактирование: 08-01-2006 17:28 от PooH » Записан

Удачного всем кодинга! -=x[PooH]x=-
Xander7
Гость
« Ответ #8 : 09-01-2006 15:43 » new

Всё, спасибо за обсуждение, все заработало, или я просто кинул страдать чепухой и подключил .срр где функции описаны, только исправил кое-что,так что если у кого сразу немного не то выдает, там просто в поиске параметры
немного подправит нужно, а точнее один. У меня BC 3.1(Borland) и у меня не ругается ( это Finch' y) и получается, что сделал я только один хедер, хотя инклудил файл. РооН у меня хедер  и так такой же, но я еще попробую прописать
Цитата
extern "C" struct emp;
А так вобщим все, только где то  ут видел топик про графику в
ВС 3.1, но сейчас найти не могу,блин :vzhik:  Вот такой я вот Отлично
« Последнее редактирование: 20-12-2007 18:42 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines