TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: japifer_22 en 09 de Noviembre de 2009, 02:11:07
-
hola, me a surguido una duda, la cual no se su respuesta, y espero que me la puedan resolver. se save que un array se puede recorrer con un for de forma facil, si es que el array esta separado con comas, me refiero a esto:
int array[8]={1,2,3,4,5,6,7,8}
entonces para recorrer este array quedaria:
for(a=0;a<=8;a++){
dato=array[a];
printf("los valores del array son: %i",dato)
dando como resultado:
los valores del array son:1
los valores del array son:2
los valores del array son:3
los valores del array son:4
los valores del array son:5
los valores del array son:6
los valores del array son:7
los valores del array son:8
pero mi duda es, que pasa si quiero sacar los valores de un array si es que este no esta separado por comas, osea que a simple vista se lea como un numero. me refiero a esto:
int array[8]={12345678}
como puedo desglozar esto ?? para leerlo de la misma forma que el ejemplo anterior ??????
bueno por que pregunto esto,?? es por el motivo que estoy implementando un codigo en el cual tengo un for, y en este almaseno un string con unos valores, pero quiero leer este string valor por valor y no como un todo. bueno lo que hace el for en este caso es incrementar en 1 mi estring, para ir dando un espacio de "memoria", para conformar mi cifra resultante, pero mi otra duda es, que si esta cifra que me resulta de mi string la puedo descomponer de la misma manera que que el ejemplo anterior ?????
-
Hola!
quizas esto te ayude.
http://www.todopic.com.ar/foros/index.php?topic=24588.0
y por favor usar el buscador.
Gracias
-
Que tal japifer_22!
Si quieres desglosar el numero debes usar unas comas, sino el compilador vera que el primer elemento vale 12.345.678 :shock: ahora bien como declaraste el array de tipo int (entero de 8 bits) este te lo truncara y solo te mostrara los 8 bits menos significativos que serai algo como 0x4E :mrgreen:
Saludos
-
Si la idea era declararlo como un string :roll: :
int array[9]="12345678"Lo recorres de la misma manera :mrgreen: o detectando el carácter nulo ('\0') que indica terminación del string.
Saludos!
-
hola bueno, primero que todo, gracias por lo cometido, pero comento que no me avia dado cuenta los array, por que los que quiero trabajar son del tipo char, en donde quiero implementar algo asi: (osea esto no se si esta bien, es lo que se me biene a la caveza ahora :mrgreen:)
for(a=0;a<=5;a++){
do{ //espera hasta...
c=kbd_getc();
}while(c==0); //...pulsar una tecla
string[a]=c; // aqui es donde guardo los valores obtenidos por c
}
pero ahora si quiero desglozar este string, que supuesto ya tiene los datos guardados: seria algo así ??:
for(b=0;b<=5;b++)
{
valores=string[b];
printf("\r\n los valores de mi array son: %c",valores);
}
entonces cuando guardo los valores de c en mi string esto como queda guardado en forma 1,2,3,.....,n ó 123....n ???
y si recorro este string de la forma que mensiono que daria de resultado valores=1 valores=2 .... valores=n ?? ó valores=123.....n ???.
bueno como meniono tengo duda de esto y no e provado lo que mensiono por que quieroestar seguro de lo que ago :mrgreen:, bueno saludos
-
hola bueno implemente lo que e puesto y bueno funciona de la manera que pensava :-/ :mrgreen: les dejo una foto del asunto en cuenstion, y el codigo para probar lo mensionado en el otro post anterior:
#include <16F877a.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=4000000) //Fosc=20Mhz
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
#include <stdlib.h> //Libreria de manego de string
char string[16],limit;
char c,total;
float comprovarClave;
signed char i,x;
void main (void)
{
while(TRUE){
for(i=0;i<16;i++){
do{ //espera hasta...
c=getc();
}while(c==0); //...pulsar una tecla
if(c==0x0D){
break;
}
limit=i+1; //longitud de la clave
string[i]=c; //almacena clave(maximo 16 caracteres)
comprovarClave=atof(string);
printf("\r\n caracter %c",string);
printf("\r\n valor %f",comprovarClave);
}
for(x=0;x<=limit;x++){
total=string[x];
printf("\r\n recorriendo string: %c",total);
}
}
}
y la foto:
http://www.subirimagenes.com/fondosycapturas-dibujo-3532308.html
-
hola para no abrir otro hilo aqui ago la siguiente pregunta...tambien relasionado con array
resulta que quiero guardar palabras en un array, el cual defino de la siguiente manera:
char nmeses[12]={"Enero","Febrero",'Marzo','Abril','Mayo','Junio','Julio',
'Agosto', 'Septiembre','Octubre','Noviembre','Diciembre'};pero esto no me lo reconoce el compilador, como puedo generar este array ??????
-
Hay que pensar un poco! El numero que se pone dentro del [ ] es para indicar cuantos caracteres/elementos tendrá el array, tu indicas 12 y quieres guardar 80, revisa el siguiente link (http://www.todopic.com.ar/foros/index.php?topic=25785.0) para estudiar el tema.
Una ayudita... vas a tener que usar un arreglo de 2 dimensiones.
Saludos!
-
hola suky efectivamente es de [12][11], y gracias por el enlace
saludos!