• Domingo 28 de Abril de 2024, 22:57

Autor Tema:  Problema Array Bidimensional, Please!!  (Leído 3985 veces)

Archivel

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Problema Array Bidimensional, Please!!
« en: Miércoles 7 de Noviembre de 2007, 22:08 »
0
Hola amigos que tal les va? a ver si me pueden echar una mano con esto:

Necesito almacenar en un array los siguienets valores --> c1, c2, c3,..., c8 pero con un array unidimensional me da error. He probado con un array bidimensional de la siguiente manera char c[8][2]={"c1", "c2", "c3", "c4", "c5"....};

Lo que no se es como tratarlos ahora, porque he de hacer un aleatorio que me elija cuatro de ellos y si hago un bucle con c me salen letras sin sentido, si hago c[1] me salen solo los numeros, y si hago c[2] los caracteres (letra c).

Creo que no puedo obviar las c's y crear el array solo de numeros porque esos 4 elementos (c1, c3, c6, c8 por ejemplo) han de ser comparados con 4 elementos que se le pasan por parametros desde teclado.

No se si me expliqué bien porque ando echa un lio!!!!!

Besos y gracias por su ayuda!!!

Mararía

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Problema Array Bidimensional, Please!!
« Respuesta #1 en: Jueves 8 de Noviembre de 2007, 02:08 »
0
A ver... c1, c2 c3 son los valores que tienes que meter? O has puesto c, como podías haber puesto caracter1 caracter2...

Suponiendo que tengas que introducir c1...etc Es obligatorio que el array sea de caracteres? Porque dado que todos empiezan por c, yo haría un array de enteros
Código: Text
  1. int Miarray[8];
  2.  
y luego algo como:
 
Código: Text
  1. //algo que saque una (o varias) i aleatorias;
  2. cout <<'c'<<Miarray[i]<<endl;
  3.  
  4.  

exjoe

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Problema Array Bidimensional, Please!!
« Respuesta #2 en: Jueves 8 de Noviembre de 2007, 06:23 »
0
a mi entender si lo que quieres es guardar "c1"...."cn" en un arreglo unidimensional lo que haría es un arreglo de tipo cadena(string) esto es en c++ ya que "c1" no es un caracter sino una cadena ya que tien mas de un caracter por eso es que te da errores al declararlo de tipo char...
entonces sería : string Arr[]={"c1",c2","c3"};// hata donde desees
o string Arr[capacidad]; //capacidad es un entero

Archivel

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Problema Array Bidimensional, Please!!
« Respuesta #3 en: Jueves 8 de Noviembre de 2007, 12:07 »
0
Hola, gracias por responder tan pronto...

c1 es un diminutivo de color 1.

Mararia, tu solución me gusta, pero mi aplicación pide que le introduzcas unos parametros por teclado, un ejemplo: c1 c3 c5 c8, que luego comparará con los aleatorios que haya obtenido el programa. mi duda es como puedo comparar c1 c3 etc(introducidos desde teclado), con los aleatorios 3 5 7 4.

exjoe gracias por tu ayuda, y perdona, porque me faltó decir que tengo que implementarlo en C. Y el tipo String no existe en C. Como podría hacer eso en C???. y si hiciera un array bidimensional como podría tratarlo para obtener del array la posicion
  • [0]y
  • [1] (por ejemplo) que contendría c y 1 para despues trabajar con esos dos datos juntos ( c1 ). Espero haberme explicado correctamente.


de nuevo muchas gracias por vuestras soluciones.

Mararía

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Problema Array Bidimensional, Please!!
« Respuesta #4 en: Jueves 8 de Noviembre de 2007, 14:06 »
0
Ya veo... y si declaras Myarray como un array unidimensional de punteros a caracter?

Código: Text
  1. char* Myarray[8];
  2.  

De esa forma puedes meter una 'cadena' en una sola casilla...

y luego para comparar, supongamos que tienes que comparar la cadena c2 con miarray[7]

Código: Text
  1. if ("c2" == Miarray[7]){
  2. //loquesea que tiene que pasar
  3. }
  4.  

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Problema Array Bidimensional, Please!!
« Respuesta #5 en: Jueves 8 de Noviembre de 2007, 19:41 »
0
Tu error esta en la declaracion del array, en C, cuando apartas espacio para las cadenas de caracteres, debes de apartar espacio para el caracter de fin de cadena o nulo '\0', es decir, si vas a almacenar 2 caracteres en la cadena, debes apartar espacio para tres, si vas a almacenar 10, debes apartar espacio para 11, es mas, aun cuando la cadena este vacia "", en realidad contiene un caracter, y ese caracter es presisamente el nulo '\0'.

Todas las funciones de C que trabajan con cadenas, utilizan el nulo como fin de cadena, por lo tanto, al no encontralo, siguen leyendo en la memoria hasta que lo encuentren, esa es la razon por la que obtienes basura.

Resumiendo, te pondre lo incorecto y lo correcto:

Código: Text
  1.  
  2. #include <stdio.h>
  3. // Codigo incorrecto, no ejecutar, se debe apartar espacio para 3 caracteres
  4. char c[8][2]={"c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8"};
  5. int i;
  6.  
  7. int main()
  8. {
  9.     for (i = 0; i < 8; i++)
  10.     printf ("%s\n", c[i]);
  11.  
  12.     return 0;
  13. }
  14.  
  15.  

Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. // Codigo correcto
  5. char c[8][3]={"c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8"};
  6. int i;
  7.  
  8. int main()
  9. {
  10.     for (i = 0; i < 8; i++)
  11.     printf ("%s\n", c[i]);
  12.  
  13.     return 0;
  14. }
  15.  
  16.  
  17.  

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Problema Array Bidimensional, Please!!
« Respuesta #6 en: Jueves 8 de Noviembre de 2007, 19:49 »
0
Un detalle mas, todos los array comienzan en el elemento 0, no en el uno, por lo tanto, en una matriz (o array multidimensional, como lo quieras ver) el primer elemento es el
  • [0], no el [1][1]. En un array de 8 elementos, los valores van del 0 al 7, en uno de 10, los valores van del 0 al 9 y asi sucesivamente


Lo comento por que veo que erroneamente tratas de leer la primera letra con c[1], y seria mas bien con c[0]

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================