Имя: Пароль:
1C
1С v8
нужна помощь на с++
,
0 men47
 
02.05.13
18:33
Здравствуйте, помогите, пожалуйста, с с++, я его раньше не изучал, но пришлось начать изучать данный язык, столкнулся с такой проблемой.

есть файл, причем в файл данной же программой записывается название кинотеатра, кол-во мест(котор проданы), категория и т.д.

мне нужно по заданию найти самый посещаемый кинотеатр

я хочу внести названия кинотеатров и кол-во мест которые были проданы в массив.

Вначале пытался сделать 2-мерный массив, но я не знаю как сделать разные колонки разными типами

потом решил использовать 2 одномерных массива, но при записи в массив где слова, там перезаписывается в 1 строку, а не в следующим, причем!!! в момент fseek(fp, sizeof(int), SEEK_SET);


Прилагаю код:


void Poseshaemost()
{  char **c = new char *[1000];
  float a[1000];
int i,j,m=0,n, sum=0;
 cinima b;
 FILE *fp;
 cout<<"\nCpisok kinoteatrov\n";
 if(nCount==0) cout<<"V spiske net dannbIx o kinoteatrov";
 else
   {   fp=fopen(filename,"r");
       if(fp==NULL)
           cout<<"Oshibka chtenia dannbIx iz faila";
       else
       {
           fseek(fp, sizeof(int), SEEK_SET);
                       m=1;
           for(i=0;i<nCount;i++)
           {
           fread(&b, sizeof(cinima), 1, fp);
                       if(m == 1)
                               {
                               c[m]=b.title+'\0';
                               a[m]=b.kol;
                               m=m+1;
                               }
                          else
                              { for(j=2;j<=m;j++)
                               if(c[j]==b.title)
                                  {
                                  a[j]=a[j]+b.kol;
                                  sum=sum+1;
                                  }
                                  if (sum==0)
                                  {
                                  c[m]=b.title;
                                  a[m]=b.kol;
                                  m=m+1;
                                  }
                                  }
           }
           fclose(fp);
       }
   }
    n=a[1];
    for(j=1;j<=m;j++)
      if (n<a[j])
       n=a[j];
    for(j=1;j<=m;j++)
      if (n==a[j])
       cout<<c[j]<<"\n"<<endl;


Я понимаю что немного косячный код, но пока какой придумался
1 НаборДанных
 
02.05.13
18:37
(0)Идти тебе в армию, ну или в 1сники)))) это же классика жанра, чтоб не сдавать зачеты). Или читай книжки, илл иди в армию.)
2 men47
 
02.05.13
18:41
(1) я раньше писал на делфи, сейчас на 1с=))) и там и там знаю как сделать а тут нет=)), покажи лучше как было бы правильно
3 НаборДанных
 
02.05.13
18:42
И это, не подсказывать, ЧСВ не вырастет, а тупого и жадного 1сника воспитаете. Пусть ищет профильный форум, хотя бы)))
4 men47
 
02.05.13
18:42
(1) во 2 армия уже не грозит, сейчас на заочке учусь
5 НаборДанных
 
02.05.13
18:44
(2) Рубан - знакомая фамилия? (4)заочка лафа, достаточно скорифаниться с очниками)))
6 НаборДанных
 
02.05.13
18:45
(1)на делфи я писал в далеких 2000-х, сейчас вроде буй на делфи уже везде положили, ты темнишь, бро.
7 HeroShima
 
02.05.13
18:45
(0) компилятор запускать пробовал?
8 men47
 
02.05.13
18:47
(7) пробовал, вот как раз и не пойму, почему при fseek(fp, sizeof(int), SEEK_SET);, меняется в массиве
9 men47
 
02.05.13
18:53
(5) Рыбанов знакомый, а Рубанов нет, делфи изучал в техникуме.... после стал 1с-ником... с++ осваиваю по ходу обучения... пытаюсь вот сам допирать почему это так, а это вот так... вот тут застопарился, если кто знает, скажите хотя бы почему так происходит, при данной строчке, далее постараюсь сам дойти
10 HeroShima
 
02.05.13
19:02
>перезаписывается в 1 строку, а не в следующим, причем!!! в момент fseek(fp, sizeof(int), SEEK_SET);
Откуда узнал что в этот момент?
11 men47
 
02.05.13
19:09
(10) посмотрел через точку останова, сначала проходит через условие где

             if(m == 1)
                               {
                               c[m]=b.title+'\0';
                               a[m]=b.kol;
                               m=m+1;
                               }


далее
идет естественно следующее чтение на fseek(fp, sizeof(int), SEEK_SET);
и следующий шаг, после чтение в c[1] забивается следующим словом, когда идет след цикл тоже самое при с[1] след слово
12 men47
 
02.05.13
19:10
(10) с числами все нормально, а вот с словами не пойму почему так
13 men47
 
02.05.13
19:29
пардон я немного ошибся не при этом моменте а при fread(&b, sizeof(cinima), 1, fp);
14 marvak
 
02.05.13
19:32
(13) Тебе лучше на тематических форумах по С++ задать этот вопрос.
2 + 2 = 3.9999999999999999999999999999999...