#include <stdio.h> #include <math.h> #include <limits.h> int main( void ) { double sum = 0.0, value; double min = DBL_MAX, max = -DBL_MAX; long count = 0; printf( " Auswertung, die erste.\n" ); while( scanf( "%*s%lf", &value ) != EOF ){ sum += value; count++; if( value < min ) min = value; if( value > max ) max = value; } if( count > 0 ){ printf( "%ld Werte gelesen.\nMittelwert: %g.\n", count, sum/(double)count ); printf( "Maximaler Wert: %g\nMinimaler Wert: %g.\n", max, min ); return 0; }else{ fprintf( stderr, "ERROR: no or incorrect data!\n" ); return 1; } } oberon$ gcc -Wall auswert1.c -lm oberon$ cat Daten ksdfhkdshfg 8.0 sadlfhlkdsh 6.0 aldfhkdh 4.0 oberon$ cat Daten | a.out Auswertung, die erste. 3 Werte gelesen. Mittelwert: 6. Maximaler Wert: 8 Minimaler Wert: 4.
#include <stdio.h> #include <math.h> #include <limits.h> #define MAX_LINES 5 double sigma( double v[], long c, double mean ) { double sigmasq = 0.0, tmp; long i; for( i = 0; i < c; i++ ){ tmp = v[i] - mean; sigmasq += tmp * tmp; } sigmasq /= c; return sqrt( sigmasq ); } int main( void ) { double sum = 0.0, value; double vector[ MAX_LINES ]; double min = DBL_MAX, max = -DBL_MAX, mean; long count = 0; int result; printf( " Auswertung, die zweite.\n" ); while( (result = scanf( "%*s%lf", &value )) == 1 ){ if( count >= MAX_LINES ){ fprintf( stderr, "ERROR: too many lines!\n" ); return 1; } vector[ count ] = value; sum += value; count++; if( value < min ) min = value; if( value > max ) max = value; } if( result != EOF ){ fprintf( stderr, "ERROR: malformatted input!\n" ); return 3; }else if( count > 0 ){ mean = sum/(double)count; printf( "%ld Werte gelesen.\nMittelwert: %g.\n", count, mean ); printf( "Maximaler Wert: %g\nMinimaler Wert: %g.\n", max, min ); printf( "Standardabweichung: +/- %g\n", sigma(vector, count, mean) ); return 0; }else{ fprintf( stderr, "ERROR: no or incorrect data!\n" ); return 2; } } oberon$ gcc -Wall auswert2.c -o auswert2 -lm oberon$ cat Daten | auswert2 Auswertung, die zweite. 3 Werte gelesen. Mittelwert: 6. Maximaler Wert: 8 Minimaler Wert: 4. Standardabweichung: +/- 1.63299 oberon$