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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2011, 22:46   #11
xdozorx
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 15
По умолчанию

обьявлял, пишет использование неопределенного типа "Cinema"
xdozorx вне форума Ответить с цитированием
Старый 02.06.2011, 22:57   #12
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
class Manager;

class Cinema
{
    private:
        Manager *manager[50];
        int count_manager;
    public:
    Cinema();
    ~Cinema() {}
        void add_manager();
        void show_manager();
        void save_file();
        void load();
 };
class Manager
{
    private:
    char name[50];
    char fam[50];
    char year[50];
    char state[50];
    char login[50];
    char password[50];
        public:
			Manager() {};
    ~Manager() {}
    void Input();
    void Output();
        char *get_name(){return name;}
        char *get_fam(){return fam;}
        char *get_year(){return year;}
        char *get_state(){return state;}
        char *get_login(){return login;}
        char *get_passwod(){return password;}

		friend void Cinema::load();
};

void Manager::Input()
{
    system("cls");
        cout<<Rus("Введите имя ");
    cin.getline(name,sizeof(name));
        cout<<Rus("Введите фамилию ");
        cin.getline(fam,sizeof(fam));
    cout<<Rus("Введите год разждения ");
    cin.getline(year,sizeof(year));
    cout<<Rus("Введите статус ");
    cin.getline(state,sizeof(state));
    cout<<Rus("Введите логин ");
        cin.getline(login,sizeof(login));
    cout<<Rus("Введите пароль ");
        cin.getline(password,sizeof(password));
}
void Manager::Output()
{
        cout<<name<<" "<<fam<<" "<<year<<" "<<state<<" "<<login<<" "<<password<<" "<<endl;
}
void Cinema::add_manager()
{
        manager[count_manager]=new Manager();
        manager[count_manager]->Input();
        count_manager++;
}
void Cinema::show_manager()
{
        if(count_manager==0) cout<<Rus("База пуста");
        for(int i=0; i<count_manager; i++)
        {
                cout<<i+1<<" ";
                manager[i]->Output();
        }
}       
void Cinema::save_file()
{
        ofstream file("D:\\test.txt",ios::app);
        for (int i=0; i<count_manager; i++)
                file<<manager[i]->get_name()<<" "<<manager[i]->get_fam()<<" "<<
                manager[i]->get_year()<<" "<<manager[i]->get_state()<<" "<<
                manager[i]->get_login()<<" "<<manager[i]->get_passwod()<<endl;
        
}

void Cinema::load()
{
	ifstream fin("D:\\test.txt");
   Manager man;
   for(;;)
   {
      fin.getline(man.name, sizeof man.name, ' ');
      fin.getline(man.fam, sizeof man.fam, ' ');
      // ...
      if(!fin)
          break;
       manager[count_manager++] = new Manager(man);
   }

}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 02.06.2011, 23:09   #13
xdozorx
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 15
По умолчанию

спасиб, вроде запускается, буду пробывать делать
xdozorx вне форума Ответить с цитированием
Старый 04.06.2011, 02:53   #14
xdozorx
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 15
По умолчанию

С классами которые записаны в базе, разобрался, теперь не получается загрузить классы которые не в базе а в других классах. Класс клиент находится в класе клубная карта, а клубная карта в базе
Код:
class Club_card;
class Client;
class Cinema
{
    private:
	Club_card *club_card[50];
	int count_club;
	int count_client;
	public:
    Cinema();
    ~Cinema() {}
    void Bron();
	void add_club_card();
	void add_client();
	void show_club_card();
	void show_client();
	void save_file();
	void load();
};

class Client
{
    private:
    char name[50];
    char fam[50];
    char state[50];
 	public:
    Client();
    ~Client() {}
    void Input();
    void Output();
	char *get_name(){return name;}
	char *get_fam(){return fam;}
	char *get_state(){return state;}
	friend void Cinema::load();
};
class Club_card
{
    private:
	Client client;
	char id[50];
    char srok[50];
    char price[50];
	public:
    Club_card() { strcpy(id, ""); strcpy(srok, ""); strcpy(price, ""); }
    ~Club_card() {}
    void Input();
    void Output();
	void add_client();
	void show_client();
	char *get_name_client(){return client.get_name();}
	char *get_fam_client(){ return client.get_fam(); }
	char *get_state_client(){return client.get_state();}
	char * get_id(){return id;}
	char *get_srok(){return srok;}
	char * get_price(){return price;}
	friend void Cinema::load();
};
void Club_card::add_client()
{
	client.Input();
}
void Club_card::show_client()
{
	client.Output();
}
void Cinema::add_club_card()
{
	club_card[count_club]=new Club_card();
	club_card[count_club]->Input();
	count_club++;
}
void Cinema::add_client()
{
	club_card[count_client]=new Club_card();
	club_card[count_client]->add_client();
	count_client++;
}
void Cinema::load()
{
   ifstream file4("D:\\club_card.txt");
   ifstream file5("D:\\client.txt");
   Client clin;
     for(;;)
   {
	   file5.getline(clin.name, sizeof clin.name, ' ');
	   file5.getline(clin.fam, sizeof clin.fam, ' ');
	   file5.getline(clin.state, sizeof clin.state);
	  if(!file5)
          break;
      club_card[count_client++] = new Club_card(clin);//отут ошибка
    }
}
xdozorx вне форума Ответить с цитированием
Старый 05.06.2011, 12:47   #15
TblKBbl4
 
Регистрация: 30.05.2011
Сообщений: 3
По умолчанию

Извините, если не туда пишу. Не хочу создавать новую тему.
Задание:
Цитата:
На междугородной АТС информация о разговорах содержит дату разговора, код и название города, время разговора, тариф, номер телефона в этом городе и номер телефона абонента. Вывести по каждому городу общее время разговоров с ним и сумму.
Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>


main()
{clrscr;
FILE *f,*g;
int i,j=0,t,r=0;
char str[128];
char q[20];
if((f=fopen("f.txt","r"))!=NULL)
{ if((g=fopen("g.txt","w+"))!=NULL){
    while(!feof(f))
 	 {  if(fgets(str, 126, f))
    		r=r+1;
    }
    int *mas1=new int(r);
    int *mas2=new int(r);
    int *mas3=new int(r);
    fseek(f, 0, SEEK_SET);
    while(!feof(f))
 	 	{  if(fgets(str, 126, f))
    		{      t=0;
                i=0;
      	        while((str[i])!=' '){
       	        i++;
      	        }
       	        i=i+1;
                while((str[i])!=' '){
                q[t]=str[i];
                 i++;t++;
                }
                 mas1[j]=atoi(q);
                 i=i+1;
                 t=0;
                 while((str[i])!=' '){
                 i++;
                }
                 i=i+1;
                 while((str[i])!=' '){
                 q[t]=str[i];
                 i++;t++;
                 }
                 mas2[j]=atoi(q);

                t=0;
                 i=i+1;
          while((str[i])!=' '){
          q[t]=str[i];
          i++;t++;
          }
                 mas3[j]=atoi(q);
          j=j+1;
        	}
          }

                for(i=0;i<=r;i++){
         fprintf(g,"%d",mas1[i]);
         fprintf(g," %d",mas2[i]);
         fprintf(g," %d\n",mas3[i]);
         }
         delete []mas1;
         delete []mas2;
         delete []mas3;
         fclose(f);
         fclose(g);
         }
         else
         {printf("nevosmojno sozdat' file.");
          }
          }
          else
         {printf("nevozmojno otkrit' file.");
          }
getch();
}
После компиляции ошибок не находит.
После запуска вылазит ошибка и билдер выделяет строчку.
Цитата:
delete []mas3;
Помогите пожалуйста разобраться в чем дело.
Сам исходный файл выглядит вот так:
Цитата:
10.10.2010 123 Atata 23 43 123456 123678
11.10.2010 234 Bububub 45 68 435463 12345
12.11.2010 123 Atata 412 43 123456 123678
14.12.2010 234 Bububub 234 68 435463 12351

Последний раз редактировалось TblKBbl4; 05.06.2011 в 12:54.
TblKBbl4 вне форума Ответить с цитированием
Старый 05.06.2011, 12:58   #16
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
int *mas1=new int(r);
int *mas2=new int(r);
int *mas3=new int(r);
Это выделение памяти для одной переменной типа int и инициализация ее значением r. Вам надо так:
Код:
int *mas1 = new int[r];
int *mas2 = new int[r];
int *mas3 = new int[r];
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 05.06.2011, 13:04   #17
TblKBbl4
 
Регистрация: 30.05.2011
Сообщений: 3
По умолчанию

Спасибо, так гораздо лучше.
И ещё один вопрос. Выводит
Цитата:
123 233 433
234 454 684
123 412 432
234 234 684
Хотя должен
Цитата:
123 23 43
234 45 68
123 412 43
234 234 68
Т.е. получается сколько знаков у максимального элемента, столько знаков и у всех последующих. С чем это может быть связано?
Всё, разобрался. Нужно было очищать строку q после каждого использования.

Последний раз редактировалось TblKBbl4; 05.06.2011 в 14:02.
TblKBbl4 вне форума Ответить с цитированием
Старый 06.06.2011, 10:38   #18
TblKBbl4
 
Регистрация: 30.05.2011
Сообщений: 3
По умолчанию

Ребят, ещё один вопрос.
Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

main()
{clrscr;
FILE *f,*g;
int i,j=0,t,r=0;
char str[128];
char q[20];
char *qwe;
char *asd;
printf(" Введите путь к исходному файлу:");scanf("%s",qwe);
printf(" Введите путь к отредактированному файлу:");scanf("%s",asd);
if((f=fopen(qwe,"r"))!=NULL)
{ if((g=fopen(asd,"w+"))!=NULL){
while(!feof(f))
{ if(fgets(str, 126, f))
r=r+1;
}
int *mas1 = new int[r];
int *mas2 = new int[r];
int *mas3 = new int[r];
char mas[20][20];
fseek(f, 0, SEEK_SET);
while(!feof(f))
{ if(fgets(str, 126, f))
{ for(t=0;t<20;t++)
q[t]=NULL;
t=0;
i=0;
while((str[i])!=' '){
i++;
}
i=i+1;
while((str[i])!=' '){
q[t]=str[i];
i++;
t++;
}
mas1[j]=atoi(q);
for(t=0;t<20;t++)
q[t]=NULL;
i=i+1;
t=0;
while((str[i])!=' '){
q[t]=str[i];
t++;
i++;
}
strcpy(mas[j],q);
for(t=0;t<20;t++)
q[t]=NULL;
i=i+1;
t=0;
while((str[i])!=' '){
q[t]=str[i];
i++;
t++;
}
mas2[j]=atoi(q);
for(t=0;t<20;t++)
q[t]=NULL;
t=0;
i=i+1;
while((str[i])!=' '){
q[t]=str[i];
i++;
t++;
}
mas3[j]=atoi(q);
for(t=0;t<20;t++)
q[t]=NULL;
j=j+1;
}
}
for(j=0;j<r-1;j++){
for(i=j+1;i<r;i++){
if (mas1[j]==mas1[i]){
mas2[j]=mas2[j]+mas2[i];
mas3[j]=mas2[j]*mas3[j];
mas1[i]=NULL;
mas2[i]=NULL;
mas3[i]=NULL;
strcpy(mas[i]," ");
}
}
}

for(i=0;i<r;i++){
if( mas1[i]!=0){
fprintf(g,"Eia ai?iaa:%d",mas1[i]);
fprintf(g," Iacaaiea ai?iaa:%s",mas[i]);
fprintf(g," Iauaa a?aiy ?acaiai?ia:%d",mas2[i]);
fprintf(g," Noiia:%d\n",mas3[i]);
}
}
delete []mas1;
delete []mas2;
delete []mas3;
fclose(f);
fclose(g);
}
else
{printf("nevosmojno sozdat' file.");
}
}
else
{printf("nevozmojno otkrit' file.");
}
getch();
}
Ошибка после того, как я ввожу путь к файлу. У друга та же самая программа работает. Есть подозрение, что это либо из-за винды, или компилятора. Подскажите, почему?

Последний раз редактировалось TblKBbl4; 06.06.2011 в 13:19.
TblKBbl4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка/Сохранение в текстовый и бинарный файлы. Kovy Помощь студентам 2 17.02.2011 12:04
Проблема такова: язык:Delphi7; сохранения файла; загрузка файла в String Grid lightdevil Общие вопросы Delphi 3 06.03.2009 23:10
загрузка из файла RAVAL)) Общие вопросы Delphi 2 04.03.2009 12:48
Загрузка из файла Raivolo Помощь студентам 3 05.02.2009 22:25
Загрузка файла AVer Работа с сетью в Delphi 0 11.02.2007 17:22