Autor Tema: Duda en manejo de array  (Leído 1677 veces)

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

Desconectado vasconinicolas

  • PIC16
  • ***
  • Mensajes: 124
Duda en manejo de array
« en: 24 de Junio de 2008, 13:08:49 »
Tengo esto y no funciona, seguramente es debido a mi desconocimiento de sintaxis del C, algun alma piadosa me lo confirmaría?

char vec[8]={1,3,2,6,4,12,8,9}, pp=0;

if (pp=7){
pp=0;}
else{
pp++;}
portb=vec[pp];     // escribo en portb el valor binario de vec correspondiente a la posicion pp en el arreglo..
}

Gracias y saludos.
"No hacen ciencia los países ricos,
Son ricos los países por hacer ciencia"

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Duda en manejo de array
« Respuesta #1 en: 24 de Junio de 2008, 13:13:09 »
Hola vasconinicolas .

La comparación se hace con pp==7 y no con pp=7 que es una asignación.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Duda en manejo de array
« Respuesta #2 en: 24 de Junio de 2008, 13:59:11 »
Es sólo un detalle, pero igual te lo digo: cuando se ejecuta una sóla instrucción dentro del if o else, no hacen falta las llaves.
Se ve más elegante así:
Código: C
  1. char vec[8]={1,3,2,6,4,12,8,9}, pp=0;
  2.  
  3. if (pp==7) pp=0;
  4. else pp++;
  5. portb=vec[pp];     // escribo en portb el valor binario de vec correspondiente a la posicion pp en el arreglo..


Otra cosa, supongo que tienes definido correctamente el portb para que te pueda funcionar de esa forma.
Yo lo hago usando la instrucción "output_x(valor)", es decir, quedaría así:

Código: C
  1. char vec[8]={1,3,2,6,4,12,8,9}, pp=0;
  2.  
  3. if (pp==7) pp=0;
  4. else pp++;
  5. output_B(vec[pp]);     // escribo en portb el valor binario de vec correspondiente a la posicion pp en el arreglo..


De todos modos como tú lo haces también debe funcionar. No más te estoy dando otra opción.
Ok saludos, nos leemos!  :mrgreen:


"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado vasconinicolas

  • PIC16
  • ***
  • Mensajes: 124
Re: Duda en manejo de array
« Respuesta #3 en: 24 de Junio de 2008, 20:25:24 »
Hola jfh, gracias por avivarme con ese gran "detalle".. lo que es empezar en C y aprender a los tumbos... eso si, no se me olvida más el detalle jejeje.
Firepic, una sutileza de experto la suya, gracias igual.. respecto a la asignacion del portb yo la habia hecho asi:

#byte portb=0x06

y luego la llamaba

portb=vec[pp];

voy a probar la que tu dices porque me parece mejor.
Un abrazo
N.
"No hacen ciencia los países ricos,
Son ricos los países por hacer ciencia"

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Duda en manejo de array
« Respuesta #4 en: 24 de Junio de 2008, 20:59:19 »
Yo no diría lo de "experto", pues estoy aprendiendo igual que tú  :D
Y no hay nada que agradecer... yo también he recibido mucha ayuda aquí en el foro... para eso estamos, para ayudarnos en lo que se pueda.
Saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Duda en manejo de array
« Respuesta #5 en: 24 de Junio de 2008, 22:10:25 »
Hola.

Puedes usar la configuracion que tienes, corre igual, la unica diferencia sera cuando quieras migrar a otro microcontrolador (un 18 por ejemplo), la direccion no sera la misma y por ende no te correra, por eso yo utilizo tambien lo que menciono Javier.

Saludos
El papel lo aguanta todo