File Text – Ejemplo 1

Enunciado

Se tiene un archivo de texto en donde cada línea contiene tres valores numéricos reales encolumnados. Leer los datos y calcular e informar el valor promedio de cada línea y el valor promedio de cada columna.

Código

Python

def main():
    numeros = open("numeros.txt", "r")
    cant = 0
    s1 = 0 ; s2 = 0 ; s3 = 0
    
    n = numeros.readline()
    while n != "" :
        n1, n2, n3 = n.split()
        cant += 1
        print( n1.rjust(5), end="" )
        print( n2.rjust(5), end="" )
        print( n3.rjust(5), end="" )
        n1 = int( n1 )
        n2 = int( n2 )
        n3 = int( n3 )
        print( "Promedio fila/Row average".rjust(30), 
               cant, ":", round((n1+n2+n3 )/3, 2 ) )
        s1+=n1
        s2+=n2
        s3+=n3
        
        n = numeros.readline()
        
    if cant>0:
        s1 /= cant
        s2 /= cant
        s3 /= cant
        print( "\nPromedio columnas/Column average: ", 
               end="" )
        print( str(s1).rjust(5), str(s2).rjust(5), 
               str(s3).rjust(5) )
        
    else: print("\nNo hay datos/No data" )
    
    numeros.close()
    input( "Presionar/Press Enter to exit " )    
main()

C++

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std ;
#include <conio.h>

int main()
{
   FILE* numeros ;
   int cant=0 ;
   float n1 , n2 , n3 , s1=0 , s2=0 , s3=0 ;

   ifstream texto(  "numeros.txt" ) ;
   if ( !texto )
   {
       cout << "El archivo no puede ser abierto/" ;
       cout << "The file cannot be opened" << endl ;
   }
   else
     do
     {
       texto >> n1 >> n2 >> n3 ;
       cant++ ;
       cout << setw(5) << n1 << setw(5) 
	    << n2 << setw(5) << n3 ;
       cout << setw(30) << "Promedio fila/Row average " 
	    << cant << ": " << (n1+n2+n3)/3.0 << endl ;
       s1+=n1 ; 
       s2+=n2 ; 
       s3+=n3 ;
     }
     while( !texto.eof()  ) ;
		
   if ( cant > 0 )
   {
     s1 /= cant ; 
     s2 /= cant ; 
     s3 /= cant ;
     cout << endl << "Promedio columnas/" ;
     cout << "Column average: " ;
     cout << setw(5) << s1 << setw(5) 
	  << s2 << setw(5) << s3 ;
    }
    else cout << "No hay datos/No data "  ;
	
    fclose(numeros);
    cout << endl ;
    cout << "Presionar/Press Enter to exit " ;
    getch() ;
    return 0 ;
}

Pascal

Program Problema21_1 ;
uses CRT;
var
    numeros : text ;
    cant : integer ;
    n1, n2 , n3 , s1, s2 , s3 : real ;

begin
    ClrScr ;
    assign( numeros , 'numeros.txt' ) ; 
    reset(numeros) ;
    cant := 0 ; s1:= 0 ; s2 := 0 ; s3 := 0 ;
    while not EOF( numeros ) do
    begin
	read( numeros , n1 , n2 , n3 ) ;
	write( n1:8:2 , '   ' , n2:8:2 , 
	       '   ' , n3:8:2 ) ;
	cant := cant + 1 ; 
	writeln( 'Promedio fila/Row average fila ':35, 
		  cant, ': ', 
                  ( n1 + n2 + n3 ) / 3 : 5 : 2 ) ;
	writeln() ;
	s1 := s1 + n1 ; 
        s2 := s2 + n2 ; 
        s3 := s3 + n3 ; 
    end ;
    if cant > 0
    then
    begin
	s1 := s1 / cant ; 
        s2 := s2 / cant ; 
        s3 := s3 / cant ;
	writeln() ;
	writeln( 'Promedio columnas/Column average:', 
		  s1:10:2 , '   ' , s2:10:2 , '   ' ,   
                  s3:10:2 ) ;
    end
    else writeln( 'No hay datos/No data ' ) ;
	
    close( numeros ) ;
    writeln ;
    writeln( 'Presionar/Press Enter to exit ' ) ;
    readln ;
end.

Diagramas