Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: folostia en 15 Enero 2012, 10:48 am



Título: Seleccionar una fila de un array en C
Publicado por: folostia en 15 Enero 2012, 10:48 am
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?


Título: Re: Seleccionar una fila de un array en C
Publicado por: folostia en 15 Enero 2012, 10:49 am
Añado que el array es el siguiente:
Código:
palabra[6][10]={"perro","gato","ordenador","pizarra","lapiz","carpeta"}


Título: Re: Seleccionar una fila de un array en C
Publicado por: rir3760 en 15 Enero 2012, 16:03 pm
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:
Código
  1. 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:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define NUM_ELEM 16
  6.  
  7. int main(void)
  8. {
  9.   int i;
  10.  
  11.   /* Definimos la semilla utilizando la hora actual */
  12.   srand((unsigned) time(NULL));
  13.  
  14.   /* Impresion de valores en el rango 0 .. NUM_ELEM - 1 */
  15.   for (i = 0; i < NUM_ELEM; i++)
  16.      printf(" %d", rand() % NUM_ELEM);
  17.   putchar('\n');
  18.  
  19.   return EXIT_SUCCESS;
  20. }

Un saludo


Título: Re: Seleccionar una fila de un array en C
Publicado por: folostia en 15 Enero 2012, 16:12 pm
Muchas gracias,crees que así me va bien?
Código:
srand(time(NULL));   
    palabra = rand() % 6;


Título: Re: Seleccionar una fila de un array en C
Publicado por: rir3760 en 15 Enero 2012, 16:17 pm
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


Título: Re: Seleccionar una fila de un array en C
Publicado por: folostia en 15 Enero 2012, 16:22 pm
Y algo así?
Código:
srand(time(NULL));   
    palabra[i] =1 rand() % 6;

Teniendo en cuenta que el array es:
Código:
palabra[6][10]={"perro","gato","ordenador","pizarra","lapiz","carpeta"}


Título: Re: Seleccionar una fila de un array en C
Publicado por: rir3760 en 15 Enero 2012, 18:25 pm
Si no tienes un curso o libro de calidad deberías conseguir uno, utiliza el motor de búsqueda para consultar los temas relacionados.

Y algo así?

Código:
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:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main(void)
  6. {
  7.   char palabra[6][10] = {
  8.      "perro",
  9.      "gato",
  10.      "ordenador",
  11.      "pizarra",
  12.      "lapiz",
  13.      "carpeta"
  14.   };
  15.  
  16.   srand((unsigned) time(NULL));
  17.   printf("Una palabra es %s\n", palabra[rand() % 6]);
  18.  
  19.   return EXIT_SUCCESS;
  20. }

Un saludo