Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: jrck 13 Listopadu 2010, 14:38:41
-
Zdravím,
mám program v jazyce ANSI C99, jedná se výpočet průměrného prospěchu žáka. Hodnoty jsou čteny ze souboru s jednoduchým ANSI kodovanim.
Jana Nova 11.3
Vladimir Hanzlik 31
Premysl Otmar 53
Alena Kralova 42.5
pozn. jde tedy o to, že načtu jednotlivé hodnoty, které sečtu a následně vydělím počtem osob, respektivě řádků.
#include <stdio.h>
#include <errno.h>
int main()
{
FILE *fr;
char soubor[50];
char jmeno[30];
char prijmeni[30];
int c,radky;
float x,y;
printf("Program pro vypocet prumerneho poctu bodu studentu ze souboru txt\n");
printf("==============================================================");
printf("\nZadej vstupni textovy soubor : ");
y=0;
radky=0;
scanf("%s",soubor);
fr=fopen(soubor,"r");
if (fr == NULL)
{
fprintf(stderr, "Chyba cteni ze souboru %s\n", soubor);
return errno;
}
while((c=getc(fr)) !=EOF)
{
fscanf(fr,"%s %s %f", &jmeno, &prijmeni, &x);
y=y+x;
radky++;
}
printf("Prumerny pocet bodu je: %.2f", (y/radky));
fclose(fr);
}
Kompilace bez chyb, ale stále to nejede. V C začínám, takže moje chyba může být kdejaká blbost.
Předem díky za rady
-
V tomto případě funguje tohle třeba
#include <stdio.h>
#include <errno.h>
int main()
{
FILE *fr;
char soubor[50];
char jmeno[30];
char prijmeni[30];
int radky = 0;
float x,y = 0;
printf("Program pro vypocet prumerneho poctu bodu studentu ze souboru txt\n");
printf("==============================================================");
printf("\nZadej vstupni textovy soubor : ");
scanf("%s",soubor);
fr = fopen(soubor,"r");
if (fr == NULL)
{
fprintf(stderr, "Chyba cteni ze souboru %s\n", soubor);
return errno;
}
while (fscanf(fr,"%s %s %f", jmeno, prijmeni, &x) != -1)
{
y += x;
radky++;
}
printf("Prumerny pocet bodu je: %.2f\n", (y/radky));
fclose(fr);
return 0;
}
1) Měl si chybu u fscanf, místo &jmeno, &prijmeni mělo byt jen jmeno a prijmeni
2) Jinak to fungovalo, ale poslední zázname se ti tam přičetl dvakrát, v tomhle případě už to neudělá