1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
/* e03-Media_numeros_leidos_de_fichero_texto 07/12/2011 A partir de un fichero de texto que contiene muchos enteros (eso si, esa cantidad es múltiplo de 10). Se trata de ir leyendo datos de ese fichero de texto e ir calculando y mostrando por pantalla las medias de los números de 10 en 10. Es decir, primero se calcula la medida de los 10 primeros números, luego la media de los 10 siguientes, y así hasta que el fichero termine. */ #include <stdio.h> main() { system("clear"); FILE *fich; // Es una referencia a la variable fich int num, suma=0; int i; // fopen() abre el fichero y guarda un "descriptor de fichero" en la variable de tipo FILE. En caso de apertura fallida devuelve un NULL. fich = fopen( "e03-Media_numeros_leidos_de_fichero_texto.txt", "r" ); // Se comprueba si se ha podido abrir el fichero. if( fich == NULL ) printf( "No se pudo abrir el fichero\n" ); else { // Se hace la primera lectura del fichero 'fich' buscando un entero y almacenándolo en 'num': fscanf( fich, "%i", &num ); // feof() devuelve: 1/true cuando se termina el fichero ó 0/false si quedan caracteres por leer. while( !feof(fich) ) // Si quedan caracteres = 0, contrario de 0 = 1, 1 = entra en el bucle. { // Se recogen 10 números los cuales se van sumando a cada vuelta: for( i=0; i < 10; i++ ) { suma += num; printf( "%i, ", num ); fscanf( fich, "%i", &num ); }; // Se muestra la media y se resetea 'media': printf( "\nMedia: %i\n\n", suma/10 ); suma = 0; }; // Se cierra el fichero: fclose(fich); }; }; |
1 |
12 34 59 7 4 641 5 84 82 85 48 45 2 6 9 8 855 61 48 5 9 2 1 548 5 92 1 8 4 959 6 2 8 49 2 6 54 61 6 2 8 97 8 1 62 8 49 5 4 9 2 6 2 51 874 92 6 2 8 5 |