C++ megszámolás segítség?
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?
#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
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?
Í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
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.
#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?
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!