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


