Seleccionar una fila de un array en C

Iniciado por folostia, 15 Enero 2012, 10:48 AM

0 Miembros y 1 Visitante están viendo este tema.

folostia

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?
"Antes de que un software pueda ser reusable, primero ha de ser usable." (Ralph Johnson)
Usuario Linux:547941

folostia

Añado que el array es el siguiente:
palabra[6][10]={"perro","gato","ordenador","pizarra","lapiz","carpeta"}
"Antes de que un software pueda ser reusable, primero ha de ser usable." (Ralph Johnson)
Usuario Linux:547941

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

folostia

Muchas gracias,crees que así me va bien?
srand(time(NULL));   
    palabra = rand() % 6;
"Antes de que un software pueda ser reusable, primero ha de ser usable." (Ralph Johnson)
Usuario Linux:547941

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

folostia

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"}
"Antes de que un software pueda ser reusable, primero ha de ser usable." (Ralph Johnson)
Usuario Linux:547941

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language