[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