Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

Mi a hiba ebben a programban? C++

254
Az lenne a feladat, hogy egy adott fájlból számokat olvasson be egy tömbbe, kiírja azokat a képernyőre és kiszámolja az összegüket is. Az első két rész talán rendben is van, de az utolsó részfeladat eredményeként mindig egy négyjegyű negatív számot ad ki, miközben a valós összegnek 173-nak kéne lennie.
Itt van maga a program:
int main()
{
FILE *fp;
char str[30];
fp=fopen("Aszamok30.txt", "r");
while(!feof (fp)) {
if (fgets(str, 30, fp))
printf("%s", str);
}
fclose(fp);
int sum=0;
for (int i = 0; i < 30; i++)

{ sum += str[i];
}

cout <<sum<< endl;

return 0;
}

Valaki esetleg megtudná mondani, hogy mit rontottam el? Rosszul adom meg magát a tömböt? Próbáltam javítgatni, de nem túl sok sikerrel. :(
A válaszokat előre is köszönöm!
Jelenleg 1 felhasználó nézi ezt a kérdést.
informatika, program, programozás, c++
0
Középiskola / Informatika

Válaszok

1
Ami elsőre feltűnik, hogy nem igazán érted vagy nem vetted figyelembe a változók típusait.
Az str egy karakter tömb, nem pedig int tömb. Tehát ha úgy kezdődik az str, hogy "13...", akkor az str[0]=1 és az str[1]=3, nem pedig 13 (szóközöknél, írásjeleknél, pedig még érdekesebb értékeket kapsz).
A másik probléma ezzel, hogy nem is hiszem, hogy befér az str-be a txt tartalma. Mivel minden karaktert beolvas, szóközt, vesszőt, illetve egy kétjegyű szám, az két karakter.
2