Kezdőoldal » Számítástechnika » Programozás » C++ megszámolás segítség?

C++ megszámolás segítség?

Figyelt kérdés

Hogyan tudom megszámolni egy file-ba mentett számsorozat tagok számát, amit a program addig olvas be, míg nullát nem kap?


Arra gondoltam, hogy megszámoltatnám a szóközök számát és a végén annak az összegét elosztanám a fileban lévő számok összegével. Ez hogyan valósítható meg?



2014. febr. 19. 20:02
 1/8 A kérdező kommentje:

#include<stdlib.h>

#include<stdio.h>



int main(){

FILE *fp;

int a;

fp=fopen("teszt.txt","a");

if(fp==NULL){

printf("Hibas file! \n");

system("pause");return-1;

}

printf("Kerek egy szamot (0 a vegjel)! :"); scanf("%d",&a);

while(a){

fprintf(fp,"%d ",a);

printf("Kerek egy szamot (0 a vegjel)! :"); scanf("%d",&a);

}

fprintf(fp,"\n");

fclose(fp);

fp=fopen("teszt.txt","r");

fscanf(fp,"%d",&a);


while(!feof(fp)){

printf("%d\n",a);

fscanf(fp,"%d",&a);


}

printf("A megadott szamok atlaga",);

fclose(fp);


system("pause");

}



Így nézne ki a forráskód

2014. febr. 19. 20:04
 2/8 anonim ***** válasza:

minek írsz a file-ba, amit aztán olvasol???

Ennek nem sok értelme van: "megszámolni egy file-ba mentett számsorozat tagok számát". Irnál pár tesztesetet? Mire milyen eredményt kellene adni a programnak?

2014. febr. 19. 20:33
Hasznos számodra ez a válasz?
 3/8 A kérdező kommentje:

Írjon programot: a main beolvas a billentyűzetről valós számokat (nulla végjelig), és azokat egy szöveges fájlban tárolja. Majd egy függvény segítségével visszaolvassa a fájl tartalmát és kiszámítja a tárolt értékek átlagát.


Ez lenne a feladat

2014. febr. 19. 20:34
 4/8 anonim ***** válasza:

Na, ezzel a feladatleírással már értjük is a kérdést. :)


Hogyan? :

Végigmész a fájl tartalmán, beolvasod egyenként a számokat, hozzáadod egy összeghez, közben növelsz egy számlálót is, a végén pedig elosztod az összeget a számlálóval. Ennyi lenne a dolog. :)


És egyébként jól is haladsz, a nagyja már megvan, csak a matek részét kell beépíteni.

2014. febr. 19. 22:05
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:

#include<stdlib.h>

#include<stdio.h>

#include <math.h>



int main(){

FILE *fp;

int a,n,sum,avg;

n= 0;

sum= 0;

fp=fopen("teszt.txt","a");

if(fp==NULL){ //ha nem sikerült a fájlt megnyitni

printf("Hibas file! \n");

system("pause");return-1;

}

printf("Kerek egy szamot (0 a vegjel)! :"); scanf("%d",&a);


while(a){

fprintf(fp,"%d ",a);

printf("Kerek egy szamot (0 a vegjel)! :"); scanf("%d",&a);

}

fprintf(fp,"\n");

fclose(fp);

fp=fopen("teszt.txt","r");

fscanf(fp,"%d",&a);

while (fscanf (fp, "%d", &a)==1) { /*sikerült olvasni*/

++n;

sum += a;


}

/*while(!feof(fp)){

printf("%d\n",a);

fscanf(fp,"%d",&a);


}*/

fclose(fp);


if (n>0) {

avg= ((double)sum)/n;

printf("Az atlag: %d ",avg);

}


system("pause");

}



Kerekítési problémáim vannak. Megpróbáltam megcsinálni az alapján, ahogy írtátok. Mit kellene javítanom, hogy pontos legyen?

2014. febr. 19. 22:33
 6/8 anonim ***** válasza:
Az avg átlag ne int legyen, hanem double. (%lf)
2014. febr. 19. 22:39
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:
Mondjuk a sok C kódot nem értem, mikor a feladat C++.
2014. febr. 19. 22:46
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:
Sietve írtam ki a kérdést, egy el is felejtettem, hogy ez sima C, még az elején úgy mondták nekünk, hogy ez C++ és sajnos rögzült.
2014. febr. 19. 22:48

További kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!