Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: průměrný prospěch [vyřešeno]  (Přečteno 2123 krát)

jrck

  • Návštěvník
  • Příspěvků: 2
průměrný prospěch [vyřešeno]
« kdy: 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ů.
Kód: [Vybrat]
#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
« Poslední změna: 13 Listopadu 2010, 15:03:30 od Honza Grulich »

premet

  • Host
Re: průměrný prospěch
« Odpověď #1 kdy: 13 Listopadu 2010, 14:59:03 »
V tomto případě funguje tohle třeba
Kód: [Vybrat]
#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á
« Poslední změna: 13 Listopadu 2010, 15:04:14 od Honza Grulich »

 

Provoz zaštiťuje spolek OpenAlt.