Autor Tema: Como ingresar numeros en cadena sin que se chanque uno al otro en una variable  (Leído 3314 veces)

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

Desconectado kikecon

  • PIC10
  • *
  • Mensajes: 35
hola como estan quisiera que me apoyen con una duda que tengo miren como podria almacenar un codigo en una variable es decir si atraves de un teclado ingreso los numeros 7 5 1 4 ese numero o codigo guardarlo en ese orden en una variable (var1=7514) si que un numero chanque a otro ojala me puedan dar una idea he estado intentando pero nada no me sale y estaba pensado en usar estructuras no se que me pueden decir ud gracias de antemano estoy usando el sourceboost c y el pic 16f873a
Enrique Contreras R.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Como ingresar numeros en cadena sin que se chanque uno al otro en una variab
« Respuesta #1 en: 05 de Febrero de 2010, 23:13:39 »
Hola.

Una forma sería almacenar en un bufer:

Código: [Seleccionar]
while(i<4)
{
 BuferDato[i]=kbd_getc();//o la función que tengas para adquirir el dato.
 i++;
}

y luego con la usas la función itoa(), que pasa de string a entero.

Saludos
El papel lo aguanta todo

Desconectado kikecon

  • PIC10
  • *
  • Mensajes: 35
Re: Como ingresar numeros en cadena sin que se chanque uno al otro en una variab
« Respuesta #2 en: 05 de Febrero de 2010, 23:40:21 »
Hola.

Una forma sería almacenar en un bufer:

Código: [Seleccionar]
while(i<4)
{
 BuferDato[i]=kbd_getc();//o la función que tengas para adquirir el dato.
 i++;
}

y luego con la usas la función itoa(), que pasa de string a entero.

Saludos

hola MLO mira en realidad entiendo tu concepto del bufer pero no se como complementarlo en mi compilador te mando una copia de la prueba que estoy  haciendo derrepnete tengo que daclarar BuferDato como variable?

#include <system.h>
#include "prueba.h"
void config(void);


void main()
{
   config();                           //llamado al prototipo de inicializacion
   int i,Dato,data;                     //variables del tipo entero
   while(1)                           //lazo infinito
   {
                        
         if(portb.0==1 && portb.7==1)data=5; //secuencia para el teclado matricial
         if(portb.1==1 && portb.7==1)data=6;   
      
   }
}

void config(void)
{
   trisb=11111111b;
}
ojala me puedas apoyar con algun comentario gracias
Enrique Contreras R.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Como ingresar numeros en cadena sin que se chanque uno al otro en una variab
« Respuesta #3 en: 06 de Febrero de 2010, 00:04:23 »
Hola.

Si, debe ser una variable.

Código: C#
  1. char BuferDato[10]="\0";//Para guardar 10 datos

Saludos
El papel lo aguanta todo

Desconectado kikecon

  • PIC10
  • *
  • Mensajes: 35
Re: Como ingresar numeros en cadena sin que se chanque uno al otro en una variab
« Respuesta #4 en: 06 de Febrero de 2010, 00:34:13 »
Hola.

Si, debe ser una variable.

Código: C#
  1. char BuferDato[10]="\0";//Para guardar 10 datos

Saludos


MLO he hecho esto pero bueno no me sale nada i aumenta pero no alamacena buffer te dejo una copia #include <system.h>
#include "prueba.h"
void config(void);


void main()
{
   config();
   char BufferDato[10];                           //llamado al prototipo de inicializacion
   int i=0,Dato,data;                     //variables del tipo entero
   while(1)                           //lazo infinito
   {
                        
         if(portb.0==1 && portb.7==1){i++; BufferDato=5;}//secuencia para el teclado matricial
         if(portb.1==1 && portb.7==1){i++; BufferDato=6;}
         while(i==4)
         {
            
            Dato=BufferDato[4];
         }
      
   }
}

void config(void)
{
   trisb=11111111b;
}
Enrique Contreras R.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como ingresar numeros en cadena sin que se chanque uno al otro en una variable
« Respuesta #5 en: 06 de Febrero de 2010, 00:42:27 »
Lo que te indica el amigo MLO_ es que uses un arreglo de variables, esto es un conjunto de variables del mismo tipo asociadas mediante un mismo nombre pero con determinada posición.

char Buffer[10] reserva 10 lugares de memoria del tipo char (8-bits), y para acceder a cada posición se hace de la siguiente manera:

Buffer[0]=0xAA, guarda 0xAA en la primer posición.
Data=Buffer[9], lee la última posición del arreglo y lo guarda en la variable Data.

Entonces tendrás que usar una variable para para acceder a cada posición y de esa manera guardar el numero que ingrese en la posición adecuada.

Para más información usa el buscador, palabras claves: arreglos, vector, punteros, ect.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Como ingresar numeros en cadena sin que se chanque uno al otro en una variab
« Respuesta #6 en: 06 de Febrero de 2010, 13:32:23 »
Hola.

Tal como tienes, el ciclo while se cumple solo si i=4. y dentro de ese ciclo estas guardando la posición numero 4 en la variable Dato. La idea es que guardes en el bufer los numeros y luego uses la función itoa(), para que pases de un tipo de variable string a uno tipo long.

Código: C#
  1. Dato = itoa(BuferDato);

Con esto: si en BuferDato tengo:
Código: C#
  1. BuferDato[4]={'1','2','3','4'};

Al usar la funcion itoa(), en la variable Dato se asignara el valor 1234;

Saludos
El papel lo aguanta todo

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Como ingresar numeros en cadena sin que se chanque uno al otro en una variable
« Respuesta #7 en: 06 de Febrero de 2010, 14:17:31 »
Creo que lo que buscas es guardar el numero en una variable del tipo 'int', o me equivoco?

Código: C
  1. int leer_teclado()
  2. {
  3.         while(1) {
  4.          if(portb.0==1 && portb.7==1) return 5;
  5.          if(portb.1==1 && portb.7==1) return 6;
  6.                  // y asi sucesivamente...
  7.    }
  8. }
  9.  
  10. int main()
  11. {
  12.         int var = 0; // consideramos que int es de 16 bits
  13.         int i;
  14.         //...
  15.         for(i=0; i<4; i++) {
  16.                 var *= 10; // desplazamos la unidad
  17.                 var += leer_teclado();
  18.         }
  19.         // ahora puedes hacer algo como
  20.         if(var == 1234) {
  21.         }
  22. }
@fabianjsm is on twitter

Desconectado kikecon

  • PIC10
  • *
  • Mensajes: 35
Re: Como ingresar numeros en cadena sin que se chanque uno al otro en una variable
« Respuesta #8 en: 09 de Febrero de 2010, 23:55:33 »
Lo que te indica el amigo MLO_ es que uses un arreglo de variables, esto es un conjunto de variables del mismo tipo asociadas mediante un mismo nombre pero con determinada posición.

char Buffer[10] reserva 10 lugares de memoria del tipo char (8-bits), y para acceder a cada posición se hace de la siguiente manera:

Buffer[0]=0xAA, guarda 0xAA en la primer posición.
Data=Buffer[9], lee la última posición del arreglo y lo guarda en la variable Data.

Entonces tendrás que usar una variable para para acceder a cada posición y de esa manera guardar el numero que ingrese en la posición adecuada.

Para más información usa el buscador, palabras claves: arreglos, vector, punteros, ect.


Saludos!

Hola Suky tambien estuve pensando en lo que me me haz escrito bueno extacmente con variables distintas y bueno me ha salido como lo queria solo me falta poner la parte de los punteros para copiar los contenido en una variable gracias por el dato, mas tengo una duda en la cuestion del buffer pues no se si es necesario poner bufferdato[4] como variable o si simplemente puedo poner una variable distina como por ejemplo x[4], hay algo que sea diferente, nuevamente gracias por el dato :D.
Enrique Contreras R.


 

anything