Προς το περιεχόμενο

Άσκηση αρχάριου στην C


jimbakl

Προτεινόμενες αναρτήσεις

Δημοσ.

καλημέρα σας. Είμαι καινούργιος γενικά στον προγραμματισμό και έχω μια άσκηση που δεν μπορω να την λυσω...

εχω ένα αρχειο (num.txt) που περιεχει νουμερα στης μορφης: 1 4 7 2 12 3 23 21 67 ....... 54,

θέλω να βρω το άθροισμα τους, το πλήθος των αριθμών , αλλα και τους αριθμούς αυτούς.

 

μήπως μπορείτε να βοηθήσετε;;;

 

οριστε ο πηγαίος μου κώδικας αλλά δεν λειτουρει...

είμαι ακόμα αρχάριος, αν είναι το λάθος μου χαζό συγχωρέστε με...

#include<stdio.h>

#include<math.h>

main(){

float sum , num;

int i;

i=1;

sum=0;

FILE*infile;

infile=fopen("num.txt","r+");

fscanf(infile," %f",&num);

while(num!=NULL){

 

sum=sum+num;

 

printf("o %dos arithmos einai %f\n",i,num);

printf("to athroisma ton arithmon mexri ton %do arithmo einai %.3f",i,sum);

FILE*infile;

infile=fopen("num.txt","r+");

fscanf(infile," %f",&num);

i++;

fclose(infile);

}

fclose(infile);

}

 

 

 

έβαλα την συνθήκη num!=NULL γιατί θελω να σταματανε οι επαναλήψεις όταν δεν πάρει αριθμό απο το αρχείο

αλλά και πάλι το πρόγραμμα δεν σταματάει ποτέ γιατί με το fscanf παίρνω πάντα τον 2ο αριθμο του αρχείου...

μήπως ξέρετε τι μπορώ να κάνω;;;

 

Βασικά έχω ένα θέμα με το fscanf, δηλαδή, δεν ξέρω πως με έναν βρόχο θα μπορέσω να διαβάσω όλα τα στοιχεία ενώς αρχείου.......

και πάλι συγνώμη για τον χρόνο σας , αλλά τώρα μαθαίνω...

Δημοσ.

Μάλλον αυτό θα θες:

>#include<stdio.h>

int main(void)
{
     float sum=0, num;
     int i=1;
     FILE *infile = fopen("num.txt","r");
     while(!feof(infile))
     {
          fscanf(infile,"%f ",&num); 
          sum += num;
          printf("O %dos arithmos einai %f\n",i,num);
          printf("To athroisma ton arithmon mexri ton %do arithmo einai %.3f\n",i,sum);
          i++;
     }
     fclose(infile);
     return 0;
}

Δημοσ.

>/* xscanf function
Return Value

On success, the function returns the number of items succesfully read. This count can match the expected number of readings or be less -even zero- in the case of a matching failure.
In the case of an input failure before any data could be successfully read, EOF is returned.
*/
int _tmain(int argc, _TCHAR* argv[])
{
...
while(fscanf(file,"%f",&num) != EOF)
{
	printf("%f\n",num);
}
	return 0;
}

Η δημοσίευση μηνυμάτων σε αυτό το forum χρησιμοποιώντας greeklish χαρακτήρες, ΑΠΑΓΟΡΕΥΕΤΑΙ!

Δημοσ.

Μάλλον αυτό θα θες:

>#include<stdio.h>

int main(void)
{
     float sum=0, num;
     int i=1;
     FILE *infile = fopen("num.txt","r");
     while(!feof(infile))
     {
          fscanf(infile,"%f ",&num); 
          sum += num;
          printf("O %dos arithmos einai %f\n",i,num);
          printf("To athroisma ton arithmon mexri ton %do arithmo einai %.3f\n",i,sum);
          i++;
     }
     fclose(infile);
     return 0;
}

 

Ο παραπάνω κώδικας είναι λανθασμένος. Σε αντίθεση με άλλες γλώσσες (όπως πχ. PHP) στην C πάντα καλούμε την feof μετά από κάποιο I/O function (fgets, fscanf κτλ.)

 

Διάβασε εδώ για περισσότερες πληροφορίες: http://www.drpaulcarter.com/cs/common-c-errors.php#4.2

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...