Autor Tema: Como hacer esto en c  (Leído 3932 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Como hacer esto en c
« Respuesta #15 en: 04 de Noviembre de 2007, 21:43:32 »
No es lo mismo. Yo lo pondría como:

Rojo  =  100*(Buffer[0]-48);
Rojo+=   10*(Buffer[1]-48);
Rojo+=        (Buffer[2]-48);

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 Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Como hacer esto en c
« Respuesta #16 en: 04 de Noviembre de 2007, 21:53:17 »
Tu bucle no funciona porque está mal implementado

int dig = 0;

for (p=2; p>=0; p--)
   {
   rojo = rojo + (10^p)*(buffer[dig]-0x30);
   dig ++;
   }

Buffer[0] hay que multiplicarlo por 100 (centenas) y buffer[1] multiplica por 10 (decenas)...buffer[2] debe acumular sin modificarse.
Lo que tu haces es multiplicar en cada iteración el contenido de rojo por 10,además de sumar el contenido del buffer


saludo
« Última modificación: 04 de Noviembre de 2007, 22:04:16 por Modulay »

Desconectado Gorgonas

  • PIC12
  • **
  • Mensajes: 81
Re: Como hacer esto en c
« Respuesta #17 en: 04 de Noviembre de 2007, 22:03:49 »
Bueno gracias a todos por ayudar, al final yendo de fuera hacia dentro descubri la raiz del problema. El problema era que aunque yo ponia la variable rojo=0 al definirla, en las pruebas para ver como pasar el char a int, antes que nocturno me dijera el metodo, deje perdida una linea de codigo que me modificaba el valor de la variable rojo siendo distinta de cero.
Por eso que todos los metodo tipo Rojo=Rojo*10+Buffer[0]-48; donde se presuponia que rojo era 0 al principio no funcionaban. Si el metodo que propuso modulay o lo que puso jhf900 donde el valor de la variable rojo no importaba.

GRACIAS A TODOS ;)
« Última modificación: 04 de Noviembre de 2007, 22:06:24 por Gorgonas »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Como hacer esto en c
« Respuesta #18 en: 05 de Noviembre de 2007, 02:54:12 »
Menos mal que lo has resuelto. A veces las cosas sencillas son las que más lata dan.

Lo que tu haces es multiplicar en cada iteración el contenido de rojo por 10,además de sumar el contenido del buffer
Eso era correcto, José. En cada iteración multiplicas por 10 lo que haya (mueves un dígito a la izquierda) y sumas un nuevo valor en unidades.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Como hacer esto en c
« Respuesta #19 en: 05 de Noviembre de 2007, 11:09:44 »
Pos es verdad.
Al final la culpa fue.......del cha cha cha :mrgreen: