|
нужна помощь на с++ | ☑ | ||
---|---|---|---|---|
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) Тебе лучше на тематических форумах по С++ задать этот вопрос.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |