Autor Tema: Sobre pregunta IF en array multiple  (Leído 2036 veces)

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

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Sobre pregunta IF en array multiple
« en: 31 de Julio de 2016, 17:32:37 »
Uno doble en ete caso si declaro:

int1 activa[3][3];

Qiero preguntar por el "1º[ ] solo" el segundo [ ] es indiferente su valor la operacion no a de efectuarse si el primero no es =True

if(activa[es][X]){     }//X es indiferente si activa[0-1-2]....no es true

Hay alguna forma de que solo tenga en cuenta el 1º?? sin tener que meterlo en un 'for' o algo a si

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re:Sobre pregunta IF en array multiple
« Respuesta #1 en: 14 de Agosto de 2016, 16:24:53 »
Stupendo!! varios dias 34 admiradores y nadie reponde algo tan simple

Solo tienes que hacer esto Berto:

if(activa[es]);//que coño os abeis creido que estais de vacaciones por el mero hecho de ser Agosto

Y bien que hago ahora

if(activa[Y][es]){     }//Y es indiferente si activa[][es]....no es true

Hay alguna forma de que solo tenga en cuenta el 2º?? sin tener que meterlo en un 'for' o algo a si

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Sobre pregunta IF en array multiple
« Respuesta #2 en: 14 de Agosto de 2016, 17:16:13 »
Stupendo!! varios dias 34 admiradores y nadie reponde algo tan simple

Yo ya te dije por que no TE respondia a VOS, y te dije el por que ibas a lograr que nadie te respondiera. Pero lo seguiste haciendo, bueno que sea lo que sea te respondo a tu pregunta.

-------------

Volviendo a tu primer pregunta..

Citar
Qiero preguntar por el "1º[ ] solo" el segundo [ ] es indiferente su valor la operacion no a de efectuarse si el primero no es =True

se nota que no sabes exactamente que es un array o tampoco tenes una imagen clara de como es almacenado dentro de la memoria.
Y lo peor de todo es (y cito tus palabras) que coño os abeis creido que estais de vacaciones por el mero hecho de ser Agosto y no buscaste vos informacion por internet. Ya que hay demasiada. Ahora voy a hacer una "ilustracion" de como quedaria en memoria un array 2 x 2 de 8 bits cada elemento:

Dir. Memoria  - Array

0x000 - array[0][0]
0x001 - array[0][1]
0x002 - array[1][0]
0x003 - array[1][1]

Ahora si observas SI importa lo que tenga en su segundo corchete, ya que estas apuntando a otro elemento totalmente distinto. Es IMPOSIBLE que tengas un TRUE con el uso del primer corchete y dejando vacio el segundo. Ya que no es un elemento valido.
Si tu idea es que si cualquiera de lso elementos que apunta el primer corchete tiene algo, entonces vas a tener que pasar 1 por 1 los elementos para verficarlos con un for.

Es decir:

array[1][es]

Pueden ser 2 cosas [1][0] o [1][1],  Las cuales el compilador no tiene ni idea de cual es la que debe usar, y sos vos el que deberia con un FOR pasar por cada uno de los elementos y determinar el resultado y no el compilador entender magicamente lo que estas trantado de realizar.

------------------

Otra de las cosas que hacen dificil a tu ayuda es la explicacion que das de tu problema, cuando tengas un problema intenta ser lo mas detallista posible pero a la ves intenta conservar la simpleza, asi el que lo lee puede entender exactamente cual es tu duda y llegar rapidamente a darte una solucion.
« Última modificación: 14 de Agosto de 2016, 18:09:06 por KILLERJC »

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re:Sobre pregunta IF en array multiple
« Respuesta #3 en: 14 de Agosto de 2016, 19:14:44 »
Bue es que estaba agoviao La playa esta llena de stupendas vistas k solo tengo derecho a mirar Luego estoy jodidillo con los programas de hacer programas, estos no se isntalan como es debido No te creas que de programar es de lo unico que no entiendo

De todas me e quedado igual eta compilando activa[es] pero no lo puedo comprobar y el -int8 es- no es exactamente magico despues de mas de un año declarar estas cosas si se hacerlo, lo que haga internmamente en profundidad colavorando con windows y otros programas No.

Si no e leido mucho Pero si un ejemplo similar en el cual

char letra[10][10]
///lo leen de la sigiuente forma dentro de main{
lee=letra[es]
}

 

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Sobre pregunta IF en array multiple
« Respuesta #4 en: 14 de Agosto de 2016, 19:51:39 »
Si no estoy equivocado se puede leer de esa forma. No queria entrar en detalles por que no tengo para probarlo pero si no me equivoco se puede y por eso mismo no lo nombre antes. Realmente para mi hacer:

letra[es]

Es lo mismo que sumarle al puntero de letra, "es" elementos. O para que quede claro, "letra" es la direccion de comienzo del array, el "es" es simplemente el elemento a que se apunta, entonces la direccion a la cual va a buscar el dato al hacer letra[es] es: letra + (es*cantidad de bytes).
Si es un int16, la cantidad de bytes es 2, por lo tanto la direccion cada ves que aumentes un elemento va ir saltando de 2 en 2.

Ahora si lo pensas usando el ejemplo anterior:

Dir. Memoria  - Array - Array unidimensional

0x000 - array[0][0] - array[0]
0x001 - array[0][1] - array[1]
0x002 - array[1][0] - array[2]
0x003 - array[1][1] - array[3]

Podrias reepresentarlo como un array unidimensional, Pero observaras que hacer array[1] no implica EXACTAMENTE lo mismo que array[1][lo que sea].
A no ser que quieras calcular el indice correcto.

Y por ahi supongo que tiene poco sentido realmente declarar un array de forma multi-dimensional cuando lo vas a usar luego de forma UNIdimensional, Si lo declaraste multidimensional es por que tenes una razon por detras, un ejemplo seria generar nuevos caracteres en los LCD, donde tenes que cada caracter son 5 lineas de 7 bits. Y ademas tenes 4 caracteres. Lo que vas a hacer es:

caracteres[4][5]

En el cual el primer indice te va a dar el caracter en cuestion, y los 5 elementos dentro de ese caracter corresponden a cada linea. Para algo lo estas separando. Y seria menos legible para otra persona declarar el array de forma:

caracteres[20]


Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re:Sobre pregunta IF en array multiple
« Respuesta #5 en: 15 de Agosto de 2016, 16:30:29 »
En mi caso creo que son 9 conbinaciones int1 array[3][3]; Gracias Pero el problema que tengo ahora es que no puedo observar resultados, solo que compile no es que valla a hacer lo que yo creo.