si yo tengo un array de 6 filas y 10 columnas,donde en cada fila hay una palabra,¿cómo hago para seleccionar un numero de fila(es decir,una palabra) aleatoriamente?
Añado que el array es el siguiente:
palabra[6][10]={"perro","gato","ordenador","pizarra","lapiz","carpeta"}
Utilizando la función "rand" (prototipo en <stdlib.h>), esta resulta en un valor de tipo int entre 0 y RAND_MAX (macro definida en el mismo encabezado).
Ese valor lo reduces mediante la sentencia:
i = rand() % 6;
De esa forma el valor de "i" estara en el rango valido. Lo siguiente es utilizar la palabra con "palabra[ i ]".
Una nota: para evitar obtener los mismos resultados con la función "rand" debes indicar la semilla para los números aleatorios mediante otra funcion ("srand" en el mismo encabezado) para ello es común utilizar la hora del sistema en esta forma:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_ELEM 16
int main(void)
{
int i;
/* Definimos la semilla utilizando la hora actual */
srand((unsigned) time(NULL));
/* Impresion de valores en el rango 0 .. NUM_ELEM - 1 */
for (i = 0; i < NUM_ELEM; i++)
printf(" %d", rand() % NUM_ELEM);
putchar('\n');
return EXIT_SUCCESS;
}
Un saludo
Muchas gracias,crees que así me va bien?
srand(time(NULL));
palabra = rand() % 6;
No lo se pero supongo que no, para estar seguros hay que revisar el código fuente (completo) del programa.
Basado en los fragmentos que pones no funcionara. Debes almacenar las cadenas en un objeto (el array "palabra") y generar el indice almacenándolo en otro (cualquier variable de tipo int como el mencionado "i").
Para procesar la palabra los utilizas juntos con "palabra[ i ]".
Un saludo
Y algo así?
srand(time(NULL));
palabra[i] =1 rand() % 6;
Teniendo en cuenta que el array es:
palabra[6][10]={"perro","gato","ordenador","pizarra","lapiz","carpeta"}
Si no tienes un curso o libro de calidad deberías conseguir uno, utiliza el motor de búsqueda para consultar los temas relacionados.
Cita de: IR.M en 15 Enero 2012, 16:22 PMY algo así?
srand(time(NULL));
palabra[i] =1 rand() % 6;
Eso tampoco funcionara ya que estas confundiendo el uso (con "palabra[ i ]") con la asignacion (que ya esta dada cuando declaras el array).
Si quieres imprimir una sola palabra al azar basta con algo mas o menos asi:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char palabra[6][10] = {
"perro",
"gato",
"ordenador",
"pizarra",
"lapiz",
"carpeta"
};
srand((unsigned) time(NULL));
printf("Una palabra es %s\n", palabra[rand() % 6]);
return EXIT_SUCCESS;
}
Un saludo