Witam, mam problem dotyczący niżej umieszczonej funkcji. Debugger nie jest w stanie pomóc, bo automatycznie wyrzuca błąd. Od początku co funkcja ma robić.
- Wczytaj nazwę pod którą zostanie utworzony plik.
- Przejdź przez pierwszą listę (po pierwszym wydarzeniu), jeśli napotkasz uczestników tego wydarzenia (warunek if(strcmp(pom->identyfikator,pom2->identyfikator3)==0) sumuj ich wiek, następnie policz z tych lat średnią i ustaw jako początkową najmniejszą średnią.
- Przejdź przez kolejne listy. Jeśli napotkasz średnią mniejszą od najmniejszej, to ta zamienia się w najmniejszą.
- Na koniec wypisz nazwę wydarzenia dla którego średnia jest najmniejsza oraz wypisz tę średnią.
- Zamknij plik.
(OBECNY_ROK to 2017)
Może ktoś zauważy błąd w kodzie i będzie w stanie pomóc?
Pozdrawiam.
void MinWydarzenie(ADRES pierwszy,ADRES2 pierwszy2)
{
int i;
int suma=0;
float srednia=0.0;
float srednia_min=0.0;
char min_wydarzenie[50];
ADRES2 pom2=pierwszy2;
ADRES pom=pierwszy;
char nazwa[50];
do
{
printf("\nPodaj nazwe z formie (nazwa.txt) (maksymalnie 50 liter)\n");
printf("Podana nazwa bedzie sluzyla jako nazwa pliku. Podana nazwa musi roznic sie od poprzedniej.\n");
scanf("%s",&nazwa);
}while(strcmp(nazwa,"Wydarzenia.txt")==0 || strcmp(nazwa,"Uczestnicy.txt")==0);
FILE *plik7=fopen(nazwa,"w");
if(!plik7)
{
printf("BLAD");
return;
}
while(pom==pierwszy)
{
while(pom2!=NULL)
{
if(strcmp(pom->identyfikator,pom2->identyfikator3)==0)
{
suma=suma+(OBECNY_ROK-(pom2->rok_urodzenia2));
i++;
}
pom2=pom2->nast2;
}
if(i==0) return;
srednia=((float)suma/i);
srednia_min=srednia;
strcpy(min_wydarzenie,(pom2->nazwa2));
pom2=pierwszy2;
pom=pom->nast;
i=0;
}
i=0;
pom=pierwszy->nast;
pom2=pierwszy2;
while(pom!=NULL)
suma=0;
srednia=0.0;
{
while(pom2!=NULL)
{
if(strcmp(pom->identyfikator,pom2->identyfikator3)==0)
{
suma=suma+(OBECNY_ROK-(pom2->rok_urodzenia2));
i++;
}
pom2=pom2->nast2;
}
if(i==0) return;
srednia=((float)suma/i);
if(srednia<srednia_min)
{
srednia_min=srednia;
strcpy(min_wydarzenie,(pom2->nazwa2));
}
}
fprintf(plik7,"Srednia wieku jest najmniejsza dla %s i rowna %2f.",min_wydarzenie,srednia_min);
fclose(plik7);
}