Page 1 of 1

Βοήθεια με την C !

Posted: Wed Jan 03, 2007 10:31 pm
by ARCHON
Γεια χαρά σε όλους και καλή χρονιά,
θέλω να φτιάξω ένα πρόγραμμα στην C , που από ένα αρχείο κειμένου (.txt, .dat κτλ) θα διαβάζει τα στατιστικά στοιχεία (αριθμούς) - π.χ ντομάδες 500 / πατάτες 300 / μανταρίνια 250 κτλ - και θα υπολογιζει τον μέσο όρο, την Διάμεσο (median), την Επικρατούσα τιμή (mode) και την Τυπική απόκλιση (std. deviation) .
Καλό θα είναι με κάποιον τρόπο να ερωτάται ο χρήστης για να μπορεί να επιλέξει το μέγεθος του δείγματος βάση του οποίου θα γίνουν οι υπολογισμοί κάθε φορά .

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

Ευχαριστώ,
αναμένω τα φώτα σας :!: ;) :roll:

* Σημειώνω να είναι σε C και όχι σε C++

Posted: Thu Jan 04, 2007 10:24 am
by ARCHON
Παραθέτω ό,τι έχω μέχρι στιγμής ,

'Ανοιγμα αρχείου κατ'επιλογή :

Code: Select all

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

void main()

{

      FILE *fopen(), *fp;

      int c ;
      // double  mean;

      char filename[40] ; 

      printf("Enter file to be displayed:"  );

      gets( filename ) ; 

      fp = fopen( filename, "r"); 

      c = getc( fp ) ;     

      while (  c != EOF )

      {

            putchar(c);   

            c = getc ( fp );  

      } 

      fclose( fp );


  
  system("PAUSE");	
  return 0;
}

'Ενα απλό παράδειγμα υπολογισμού του Μέσου όρου :

Code: Select all

int a, b;
double mean;

printf("dose ton proto arithmo a: ");
scanf("%d", &a);
printf("dose ton deftero arithmo b: ");
scanf("%d", &b);

mean = 0.5*(a+b);
printf("O mesos oros ton arithmon einai %d and %d is %g\n", a, b, mean);
Λίγη βοήθεια πως θα ενώσουμε τα δύο κομμάτια έτσι ώστε να μπορούμε να διαβάζουμε το περιέχομενο του αρχείου που επιλέξαμε και να υπολογίζουμε τον Μ.Ο δίχως να μας ενοχλούν τα γράματα που συνοδεύουν τους αριθμούς (π.χ ntomata 200 ) . Φυσικά ο Μ.Ο να υπολογίζεται για παρπάνω από 2 αριθμούς . :?: :roll:

* τα αρχεία θα είναι της μορφής :
ntomata 200
peponi 150
marouli 250
lemoni 110

κτλ..

Posted: Thu Jan 04, 2007 12:46 pm
by nap
Δες αυτό για τον μέσο όρο, χωρίς να αποθηκεύει τις τιμές και με την προυποθεση ότι υπάρχει μία λέξη πριν τον αριθμό στην κάθε γραμμή του αρχείου σου.

Code: Select all

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

void main()
{

	FILE *infile;
	char buffer[255];
	float f;
	float sum = 0;
	int count = 0;


	printf("Enter filename: ");
	scanf("%s",buffer);

	if((infile = fopen(buffer, "r"))==NULL)
	{
		printf("Error opening file \"%s\".\n", buffer);
		exit(0);
	}

	while(!feof(infile))
	{
		count++;
		fscanf(infile, "%s %f", buffer, &f);
		sum = sum + f;
	}

	fclose(infile);

	printf("The mean is : %f\n", sum/count);

	system("PAUSE");   
} 
Για τις άλλες ποσότητες που θές να υπολογίσεις ίσως θα πρέπει να αποθηκέυσεις τους αριθμούς σε έναν πίνακα...

Posted: Sat Jan 06, 2007 11:40 pm
by ARCHON
Ευχαριστώ πολύ ;)