[C con Clase] Operaciones con tablas

Steven Davidson steven en conclase.net
Mar Mar 27 04:40:42 CEST 2007


Hola David,

El pasado 2007-03-26 15:45:37, David Gonzalez escribió:

DG> Hello Todos,
DG> Yo otra vez, pero esta con una pregunta sobre vectores.
DG> me mandaron a hacer un programa con una tabla de 100x100,
DG> llenarla con con numeros aleatorios generados con srand(time(0)) y
DG> rand(), luego dar la suma de las filas y de las columnas y el promedio
DG> de cada una, pero estoy algo perdido, porque intente hacerlo asi:
DG> /***
DG> *
DG> * DAVID GONZÁLEZ HERRERA
DG> * CODIGO: 20071020032
DG> * PROGRAMACION 1 - GRUPO 2
DG> ***/
DG> #include <cstdlib>
DG> #include <iostream>
DG> #include <cmath>
DG> #include <ctime>
DG> //#include <conio2.h>
DG> using namespace std;
DG> const int FIL=3;
DG> const int COL=3;
DG> const int LO=10;
DG> const int HI=1000;
DG> int main(int argc, char *argv[]){ 
DG>     int tabla[FIL][COL];
DG>     srand((unsigned)time(0)); 
DG>     int ran, sumcol=0, sumfil=0;;
DG>     for(int i=0; i<FIL; i++){
DG>         for(int j=0; j<COL; j++){ 
DG>             ran = (rand()%(HI-LO+1)+LO);
DG>             tabla[i][j] = ran;
DG>             cout << tabla[i][j] << endl;
DG>             sumcol += tabla[i][j];
DG>         }
DG>     }

Según has usado 'sumcol', lo que terminas por hacer es calcular la suma total de todos los elementos de 'tabla'.

DG> Pero no me funciona, no se como se hace para iterar con el for pero
DG> llenando con un numero aleatorio (i & j) diferente cada vez.

Esto lo has hecho correctamente.

DG> Tampoco se como sumar solamente las filas o columnas de la tabla,
DG> Sialguien pudiera pulir mi código un poco o decirme que esta mal,
DG> agradezco sugerencias.

Lo que tienes que hacer es calcular la suma de cada columna y de cada fila. Esto implica que existen varias sumas. Para representar más de un valor, necesitamos un array. Puedes crear dos arrays; uno para la suma de las columnas y otro para la suma de las filas. Por ejemplo,

int sumacol[COL], sumafila[FIL];
...

Al final, tendrás que calcular el promedio de cada columna y de cada fila, por lo que podemos usar estos mismos arrays para guardar los promedios. Por ejemplo,

for( int i=0; i<COL; i++ )
  sumacol[i] /= COL;


Espero que esto te oriente.

Steven


Más información sobre la lista de distribución Cconclase