Výpočet průměru v Cčku

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Velous
Příspěvky: 99
Registrován: 12 bře 2010, 00:00

Výpočet průměru v Cčku

#1 Příspěvek od Velous »

Zdravím, potřebuju poradit.
Mám 2 verze jednoho programu, ale ani jedna nefunguje tak, jak má. Je to program pro výpočet aritmetického průměru hodnot zadaných v souboru. Protřebuju, aby mi program přečetl hodnoty ze souboru, vypočítal průměr a vytiskl do druhého souboru jméno, příjmení, hodnotu a nakonec už vypočítaný průměr. Jeden program mi hodnoty přečte, vypočítá průměr, vytiskne ho na obrazovku, ale nezapíše do souboru, nevím proč. Ten druhý ani nevypočítá průměr. Prosím mrkněte se mi na to někdo a řekněte mi, popřídadě opravte, co tam je špatně. Díky moc.


}
Naposledy upravil(a) Velous dne 05 pro 2012, 19:23, celkem upraveno 1 x.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#2 Příspěvek od Andrea »

Nějak divně používáš fprintf(), buď ti tam chybí formátovací řetězec, nebo ti tam chybí proměnná.

fprintf(fw, jmeno, prijmeni, radky)
fprintf(fw, "Prumerny pocet bodu je: %f\n")
Uživatelský avatar
Velous
Příspěvky: 99
Registrován: 12 bře 2010, 00:00

#3 Příspěvek od Velous »

Je to možné. Chodím na vysokou a tam nám k tomu skoro nic neřekli, takže mi zbývá samostudium. :-( Takže se není čemu divit, pokud něco používám špatně, nebo mi někde něco chybí.

Ten první program už mi jakš takš jede, jen mám problém s tím nekonečným cyklem. Potřebuju, aby mi vypsal do souboru jméno, příjmení, hodnotu ( jsou tam 4 řádky) a nakonec mi napsal Průměrný počet bodů je:... Do souboru mi napíše jen tu větu a vypočtenou hodnotu.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#4 Příspěvek od Andrea »

A k čemu je tam ten nekonečný cyklus a testování EOF při zápisu do souboru?
Uživatelský avatar
Velous
Příspěvky: 99
Registrován: 12 bře 2010, 00:00

#5 Příspěvek od Velous »

Už jsem to udělal jinak, ale nevím, proč mi to nechce vypsat 4 řádky ze vstupní souboru do výstupního v tom posledním cyklu while. A nevím, co tam mám dat do závorky while ().

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

int main()
{
FILE *fr, *fw;
char soubor[50];
char soubor_2[50];
Naposledy upravil(a) Velous dne 05 pro 2012, 19:25, celkem upraveno 1 x.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#6 Příspěvek od Andrea »

Kromě toho, že tam zase špatně používáš fprintf(), tak jak ti to může zapsat do souboru 4 řádky ze vstupu, když je nemáš nikde uložené? A pro konkrétní počet opakování je dobrý cyklus for.

A co to má vlastně dělat, nemá to náhodou počítat průměr pro každého studenta zvlášť? Nebo k čemu je tam to jméno a příjmení?
Uživatelský avatar
Velous
Příspěvky: 99
Registrován: 12 bře 2010, 00:00

#7 Příspěvek od Velous »

Ne. Má to udělat průměr z hodnot uvedených ve vstupním souboru. Ale už jsem to vyřešil:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
Naposledy upravil(a) Velous dne 05 pro 2012, 19:24, celkem upraveno 1 x.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#8 Příspěvek od Andrea »

Akorát

Kód: Vybrat vše

if(fw == NULL)

určitě není chyba čtení ze souboru.
Uživatelský avatar
Velous
Příspěvky: 99
Registrován: 12 bře 2010, 00:00

#9 Příspěvek od Velous »

Jo, díky to jsem přehlídl. Má tam být zápisu do souboru.

A co jste myslela tím, že špatně používám fprintf?
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#10 Příspěvek od Andrea »

Přesněji je to chyba při otvírání výstupního souboru.

Tím chybným použitím fprintf() jsem myslela to, že ti tam jednou chyběla rukojeť souboru, jindy ti tam chyběl formátovací řetězec nebo ti tam chyběla zapisovaná proměnná.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“