Autor Tema: Convertir vector a entero en CCS  (Leído 5593 veces)

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

Desconectado JANDAL

  • PIC10
  • *
  • Mensajes: 3
Convertir vector a entero en CCS
« en: 14 de Marzo de 2014, 20:16:52 »
Hola, ante todo un saludo a todos y felicitarlos por este espacio. Estuve leyendo aqui pero encontré específicamente lo que necesito. Agradezco la ayuda.
Estoy haciendo un programa en ccs para configurar un DS1307, leo datos con un teclado con k=kbd_getc() y armo un arreglo de 3 datos, asi: unsigned char array[3],
pero necesito pasar este vector a un numero entero. No se como hacerlo, he hecho de todo, atoi(), etc y etc, estaría enormemente agradecido por la ayuda. Como paso
este vector a un entero??? les dejo el codigo que hice en esa parte

   while(a<=1){                //Para dos datos
      k=kbd_getc();            //Lee el teclado
      x=k-48;
      if (k!=0)                //Si se ha pulsado alguna tecla
         {array[a]=x;           //se guarda en la posición correspondiente
          a++;             
           }     
         }
         Ensayohoy.dia=atoi(array); //no me funciona
         printf(lcd_putc,"\f DIA %2u ",Ensayohoy.dia);  //siempre muestra cero
         delay_ms( 500 );

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Convertir vector a entero en CCS
« Respuesta #1 en: 14 de Marzo de 2014, 22:02:05 »
Hola,

falta información. Qué es lo que querés hacer? Explícalo y detállalo lo mejor posible. Qué tipo de variable es Ensayohoy.dia?
La comprobación de k!= 0, debe hacerse antes de restarle el valor 48 al leído. Sino si presionas el 0 no te va a funcionar. Pero hasta no saber bien cuál es el comportamiento que deseas lograr, dificil ayudarte.

Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Convertir vector a entero en CCS
« Respuesta #2 en: 15 de Marzo de 2014, 08:36:51 »
La cadena debe de terminar en cero:

array[a]='\0';

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 JANDAL

  • PIC10
  • *
  • Mensajes: 3
Re: Convertir vector a entero en CCS
« Respuesta #3 en: 17 de Marzo de 2014, 03:19:30 »
Hola bruno gracias por le interes de ayudarme.
Es decir necesito convertir la vector array[3]={2,5} a un entero 25

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Convertir vector a entero en CCS
« Respuesta #4 en: 18 de Marzo de 2014, 11:30:38 »
Hola bruno gracias por le interes de ayudarme.
Es decir necesito convertir la vector array[3]={2,5} a un entero 25


Como te comenta jfh900 tu cadena debe terminar en 0
si ya tienes un vector con los datos v[0]='2' y v[1]='5'  al siguiente elemento de la cadena v[2]=0 y puedes usar la función atoi, toma en cuenta que tus elementos a converir deben ser ascii, y el elemento final es un 0 en decimal  0 != '0'.

Saludos
"Nada es imposible, no si puedes imaginarlo"

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Convertir vector a entero en CCS
« Respuesta #5 en: 18 de Marzo de 2014, 11:51:52 »
no es igual '2' que un 2 a secas, el primero da el codigo de ascii y el segundo es un numero.

Si sabes el numero determinado del array siempre puedes usar el metodo de decenas, centenas...

numero=array[2]*100+array[1]*10+array[0];

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Convertir vector a entero en CCS
« Respuesta #6 en: 18 de Marzo de 2014, 11:59:13 »
no es igual '2' que un 2 a secas, el primero da el codigo de ascii y el segundo es un numero.

Si sabes el numero determinado del array siempre puedes usar el metodo de decenas, centenas...

numero=array[2]*100+array[1]*10+array[0];

exacto!

'2' =0x32
y
2=0x02


Tendría que revisar si la libreria de kbd regresa el valor en ascii o en entero, nunca la he usado, pero por el kbd_getc yo diría que es ascii
"Nada es imposible, no si puedes imaginarlo"

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Convertir vector a entero en CCS
« Respuesta #7 en: 18 de Marzo de 2014, 13:23:39 »
No te funciona tampoco por que estas convirtiendo caracteres en números => x-48 <=. Elimina esta línea y añade un cero al final de la cadena con lo que funcionará "atoi".

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 BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Convertir vector a entero en CCS
« Respuesta #8 en: 18 de Marzo de 2014, 14:56:56 »

   while(a<2){                //Para dos datos
      k = kbd_getc();            //Lee el teclado
      if (k != 0)                //Si se ha pulsado alguna tecla
         array[a++] = k - 0x30;           //se guarda en la posición correspondiente   
   }
         Ensayohoy.dia= array[0] * 10 + array[1];
         printf(lcd_putc,"\f DIA %2u ",Ensayohoy.dia);  //siempre muestra cero
         delay_ms( 500 );
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.