Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 14:46   #1
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию C++... Необходимо исправить 4 ошибки...

C++... Сама задачка раньше была сделана через структуру, но теперь её нужно модифицировать чтобы она работала через классы...
начал делать, и вот стали вылетать такие ошибки, если я правильно понял это необъявлена переменная...
в структуре достаточно было в каждой функции написать к примеру mon a;
а как же в классах исправить сложившуюся проблему??
Код:
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
 
 int kol=0;
int p=0;
int v=0;
int k=0;
int i=0;
int res,res1;
class mon{
  char type[20];
  int opt, rozn;
  char comm[40];
public:
  void WriteFile()
{
        FILE *fi,*fo;
		 clrscr();
         if ((fi=fopen("D:\\file.txt", "r"))==0){
          cout << "Error open input file!!!" ;
          return;}
		 if ((fo=fopen("D:\\out.dat","w+b"))==0){
          cout << "Error open output file!!!";
          return;}
         const int dl=80;
		 char s[dl];
        while(fgets(s,dl,fi)){
        strncpy(type,s,19);
        type[19]='\0';
		opt=atoi(&s[20]);
        rozn=atoi(&s[25]);
        strncpy(comm,&s[30],39);
		comm[39]='\0';
		fwrite(&a,sizeof(mon),1,fo);  // вот здесь первая 'Undefined symbol 'a''
		kol++;
		};
        fclose(fi);
		fclose(fo);

        return;
}

void out()
{
        FILE *fo;
		clrscr();
        if ((fo=fopen("D:\\out.dat","rb"))==0){
          cout << "Error open output file!!!";
          return ;}
		int i;
        cout<<"Input number of Zapisi ";
        cin >>i;
        if (i>kol) {
		  cout << "Zapisi net!!!";
          return;}
		fseek(fo,sizeof(mon)*(i-1),SEEK_SET);
		fread(&a,sizeof(mon),1,fo); // вот вторая 'Undefined symbol 'a''
		cout << "Tip: " << a.type << " opt.: " << a.opt << " rozn: " << a.rozn << endl;
		fclose(fo);
}

void ClearFile()
{
		FILE *fo;
		clrscr();
		if ((fo=fopen("D:\\out.dat","rt"))==0){
		cout << "Error open output file!!!"<<endl;
		  return ;}
        fclose(fo);
}
 
void Opt()
{
  FILE *fo;
  if ((fo=fopen("D:\\out.dat","r"))==0){
        cout << "Error open output file!!!";
        return;}
  fseek(fo,0,SEEK_SET);
 
  cout << "Vvedite optovuy cenu: " << endl;
  cin >> p;
  while ((res=fread(&a,sizeof(mon),1,fo))==1)  // третья  'Undefined symbol 'a''
	{
    if (opt==p)
    {
	  cout<<type<<" "<<opt<<" "<<rozn<<" "<<comm<<" "<<endl;
    }
   }
  if (kol==k) cout << "Zapoolnite file!!!";
  fclose(fo);
   return;
}
void Rozn()
{
  FILE *fo;
  if ((fo=fopen("D:\\out.dat","r"))==0){
        cout << "Error open output file!!!";
		return;}
  fseek(fo,0,SEEK_SET);
  cout << "Vvedite roznichnuy cenu: " << endl;
  cin >> v;
   while ((res=fread(&a,sizeof(mon),1,fo))==1)  // четвёртая 'Undefined symbol 'a''
   {
    if (rozn==v)
    {
	  cout<<type<<" "<<opt<<" "<<rozn<<" "<<comm<<" "<<endl;
    }
   }
  if (kol==k) cout << "Zapoolnite file!!!";
  fclose(fo);
   return;
}
void Search()
{
 char menu_2;
 do
 {
   cout <<endl<< "1 Optovaya" << endl << "2 Roznica" << endl << "3 Vozvrat v gl. menu"<< endl;
   menu_2=getch();
   switch(menu_2)
   {
		 case '1':
           Opt();
           break;
         case '2':
		   Rozn();
           break;
          };
   if (menu_2=='3') break;
 }
 while(1);
clrscr();
}
};
 
void main()
{
 char menu;
 mon a;
 clrscr();
 do
 {
   cout <<endl<< "1 Zapis' v file" << endl <<"2 Vivod na ekran" << endl << "3 Ochistka file" << endl << "4 Search..."<< endl << "5 Vichod" << endl;
   menu=getch();
   switch(menu)
   {
		 case '1':
		   a.WriteFile();
		   break;
		 case '2':
		   a.out();
		   break;
		 case '3':
		   a.ClearFile();
		   break;
		 case '4':
		   a.Search();
		   break;
				 };
   if (menu=='5') break;
 }
 while(1);
}
Плиз помогите исправить данные ошибки...
hen вне форума Ответить с цитированием
Старый 16.04.2009, 15:20   #2
Goblin
Форумчанин
 
Регистрация: 24.11.2007
Сообщений: 196
По умолчанию

А как вообще можно указывать на объект который еще не существует. :/
Goblin вне форума Ответить с цитированием
Старый 16.04.2009, 15:21   #3
Goblin
Форумчанин
 
Регистрация: 24.11.2007
Сообщений: 196
По умолчанию

Попробуй заменить все &a на this
Goblin вне форума Ответить с цитированием
Старый 17.04.2009, 01:06   #4
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

Goblin, объясните пожалуйста что такое 'this'
hen вне форума Ответить с цитированием
Старый 17.04.2009, 04:28   #5
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
объясните пожалуйста что такое 'this'
а по гуглить влом? или книгу почитать(про классы)
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить ошибки Satorin Общие вопросы Delphi 4 25.12.2008 21:35
помогите исправить ошибки в задаче на С++ Wia Помощь студентам 4 14.12.2008 16:09
помогите исправить ошибки kermit Помощь студентам 1 21.06.2008 10:44
Помогите исправить незначительные ошибки HAMMAN Помощь студентам 1 10.06.2008 19:07
Помогите исправить ошибки ...С++ Настенька Помощь студентам 1 25.03.2007 23:30