[C con Clase] Ayuda con C

Steven Davidson srd4121 en njit.edu
Jue Jun 5 20:43:01 CEST 2008


Hola Laura,

Laura wrote:
> Nesesito ayuda de como puedo hacer un programa que llene
> aleatoriamente una matriz 5 x 5 con valores que oscilen entre 1 y 9,

Para obtener números aleatorios, necesitarás dos funciones estándares en 
<cstdlib> (o <stdlib.h>): 'srand()' y 'rand()'.

La función 'srand()' sirve para iniciar el generador de números 
pseudo-aleatorios y por tanto sólo se debe invocar UNA sola vez en tu 
programa. Sugiero hacer esto nada más empezar 'main()'. Esta función 
requiere un valor entero inicial. Para asegurar que el valor inicial sea 
algo aleatorio también, se suele tomar la hora y fecha del sistema como 
tal valor "semilla". Por ejemplo,

int main()
{
   srand( time(0) );
   ...
}

Obviamente, necesitarás incluir el fichero de cabecera <ctime> (o <time.h>).

La función 'rand()' es invocada tantas veces como necesites un valor 
aleatorio. El valor obtenido se comprende entre 0 y 'RAND_MAX', ambos 
valores incluidos. Como necesitas valores entre 1 y 9, debemos aplicar 
alguna fórmula para convertir el intervalo de 'rand()' a nuestro 
intervalo de valores. Esta fórmula es:

valor_generado = valor_inicial + (int)(rand()*(cantidad/(RAND_MAX+1.0)));

En nuestro caso, la fórmula se puede reescribir así:

valor_generado = 1 + (int)(rand()*9.0/(RAND_MAX+1.0));

Sugiero consultar la referencia de éstas y otras funciones en nuestra 
página. Puedes ir directamente a: http://c.conclase.net/librerias/index.php

> la imprima en pantalla y muestre el valor que más se repitió y el
> promedio de los valores. Se aconseja usar un arreglo de tamaño 10
> inicializado en cero para ir incrementando las ocurrencias de los
> valores.

Efectivamente, es mejor tener una lista de ocurrencias o de frecuencias; 
a esto se llama un histograma.

Lo que tu programa debería hacer es:
1. Llenar la tabla de 5x5 con número aleatorios (de 1 á 9).
2. Recorrer esta tabla de 5x5. Cada valor de la tabla es el índice del 
histograma. Incrementamos el elemento del histograma basándonos en este 
valor-índice.

Te doy un ejemplo,

histograma[ tabla[3][2] ]++;

Como puedes ver, el valor de 'tabla[3][2]' es el índice para 'histograma'.


Creo que no tendrás muchos problemas para calcular el promedio. Tienes 
toda la información necesaria para determinarlo.


Espero que todo esto te ayude.

Steven






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