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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 11:49   #1
nata_lu
Новичок
Джуниор
 
Регистрация: 19.12.2012
Сообщений: 2
Радость листинг программы с динамическим массивом структур (и создание файлов).

/*Sozdaite fail katalog knig.
Naidite spetsialinosti p k-roi imeetsea naibolishee 4islo knig.*/

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<malloc.h>

typedef struct Kniga {
char spetsialinosti[40],
avtor[40],
nazvanie[80];
int god;} Kniga ;

typedef struct Spets{
char nazv_sp[40];
int kol_vo;
} Spets ;

int main()
{
Kniga katalog;
Spets *sp;
int i, imax;
int n;
FILE *fk;
sp=(Spets*)calloc(n,sizeof(Spets));
printf ("Vvesti kol-vo spetsialinostei: n=");
scanf("%d",&n);
for (i=0; i<n; i++ )
{printf(" vvedite nazvanie spetsialinosti %d :",i);
scanf("%s",sp[i].nazv_sp);
(sp[i].kol_vo)=0;
printf("sp[%d].kol_vo=%d\n",i,sp[i].kol_vo);
}

if ((fk = fopen("katalog.dat","w"))==NULL)
printf("Nevozmojno otkriti fail!!!\n");
else {
printf("vvesti spetsialinosti, avtora, nazvanie knigi, god izdania \n");
printf("vvesti EOF dlea zavershenie programi\n"); // - Po4emu????
printf("? ");
scanf("%s %s %s %d",katalog.spetsialinosti,katalog. avtor,katalog.nazvanie,&katalog.god );

while (!feof(stdin)){
fprintf(fk,"%s %s %s %d\n",katalog.spetsialinosti,katalo g.avtor,katalog.nazvanie,katalog.go d);
printf("? ");
scanf("%s %s %s %d",katalog.spetsialinosti,katalog. avtor,katalog.nazvanie,&katalog.god );
}
fclose( fk );
}

if ((fk = fopen("katalog.dat","r"))==NULL)
printf("Nevozmojno otkriti etot fail!!!\n");

else {
while ( !feof(stdin))
{
for (i=0; i<n; i++ )
{
if (sp[i].nazv_sp==katalog.spetsialinosti)
sp[i].kol_vo=sp[i].kol_vo+1;
else
printf("drug spets!!!\n");
}
}
}

for (i=0; i<n; i++)
{printf("Po spetsialinosti nr.%d - %s - %d knig\n ", i, sp[i].nazv_sp, sp[i].kol_vo);}


imax=0;
{ for (i=1; i<n; i++)
if (sp[i].kol_vo>sp[imax].kol_vo)
{ sp[imax].kol_vo=sp[i].kol_vo;
imax=i;}
}
printf ("Maximalinaya spetsialinosti: spetsialinosti nr.%d - %s - %d knig\n", imax,sp[imax].nazv_sp, sp[imax].kol_vo);

printf("zavershenie raboti \n");
fclose(fk);
free(sp);

getch();
return 0;
}
nata_lu вне форума Ответить с цитированием
Старый 19.12.2012, 11:52   #2
nata_lu
Новичок
Джуниор
 
Регистрация: 19.12.2012
Сообщений: 2
По умолчанию

Подозреваю, что ошибка в фрагменте:


else {
while ( !feof(stdin))
{
for (i=0; i<n; i++ )
{
if (sp[i].nazv_sp==katalog.spetsialinosti)
sp[i].kol_vo=sp[i].kol_vo+1;
else
printf("drug spets!!!\n");
}
}
}

Подскажите, пжлт, как ее исправить...
nata_lu вне форума Ответить с цитированием
Старый 19.12.2012, 12:22   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

0) Код оформляется тегом форума CODE.
1) Что, по Вашему мнению, должен делать каждый из участков кода? Обратите внимание, что после открытия файла на чтение Вы не обращаетесь к нему до момента закрытия. Вероятно, это ошибка, но, не имея представления о том, что Вы хотите сделать, не представляется возможным утверждать это с уверенностью, а уж тем более - исправлять её.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с динамическим массивом Noob(c++) Общие вопросы C/C++ 56 02.08.2012 23:09
Проблема с динамическим массивом zumm Общие вопросы Delphi 3 09.07.2010 20:20
Управление динамическим массивом abr_question Общие вопросы C/C++ 12 18.12.2009 22:01
Создание функции для работы с динамическим массивом papoose Помощь студентам 2 19.01.2009 16:55
проблема с динамическим массивом kommunist Помощь студентам 6 11.11.2007 21:18