Hola a todos!
estoy programandop en ANSI C
mi duda es concreta:
tengo que pasar un array del formato
char numero [3];
numero [0]= "6";
numero[1]="8";
numero [2] = "3";
numero[3] ="2";
//y un int
int convertido;
quiero copiar el array de char al int, para que quede convertido = 6832
en el caso de este ejemplo.
no me sirve la funcion atoi () porque en ese caso me tira los equivalentes numericos en ascci, y no me sirve eso,
quiero que me pase el numero, no importa si al reves de ultima, pero que los pase.
mcuahs gracias, y espero que me respondan
saludos
----------PSP---------
PSP 2001 Piano Black- placa ta-085 v2 .. desde OF 3.95 pasando por 3.9M33, 5.00M33, {muchos más} GEN, y actualmente Neur0n 6.38
---------ANDROID ***Nuevo ;) *** ------
Samsung Galaxy S Captivate de Rogers Canada {SGH-896} (Es identico al SGH-897 de USA)
Rooteado, LIBERADO POR MI funcionando en Argentina (dudas, MP)
Rom Phoenix Ultimate.. esperando CM7 estable :)
LO LOGRÉ!!!
Despues de romperme la cabeza xD, y encima me quedaba al revez (cosa q solucioné),
ya lo logré =D
teniendo un
char numero [largo];
en que cada slot, SOLO sea un numero del 0 al 9,
haciendo
int entero = unoporuno (numero,largo);
, entero termina valiendo el numero que forman los slots de numero[] , empezando de i = 0. ja.
el código es:
int unoporuno (char numero[],int largo){
int i;
int aux;
int buffer=0;
int enterito=0;
int c;
int sumarete=0;
for (i=0;i<largo;i++){
c = (int)numero [i];
aux = pow (10, largo - i -1);
//printf("\npot:%i",aux);
//printf("\nc:%i",c);
switch (c){
case 48:
buffer = 0;
break;
case 49:
buffer = 1;
break;
case 50:
buffer = 2;
break;
case 51:
buffer = 3;
break;
case 52:
buffer = 4;
break;
case 53:
buffer = 5;
break;
case 54:
buffer = 6;
break;
case 55:
buffer = 7;
break;
case 56:
buffer = 8;
break;
case 57:
buffer = 9;
printf("\nsi.. pasa");
break;
}
sumarete = (buffer * aux);
//printf("\nsumarete[%i]:%i",i,sumarete);
enterito = enterito + sumarete;
//printf("\nbuffer[%i]:%i",i,buffer);
//printf("\nenteritoparcial:%i",enterito);
}
printf("\n\nenterito:%i\n\n",enterito);
return enterito;
}
si.. los nombres son cualquier cosa xD pero son espontaneidades que se me ocurren a la hora de escribir, no me juzguen por ellos =P
los printf por todos lados los use para testear a cada paso que iba pasando en la memoria (la forma mas simple d ehacerlo xD)
en fin, gracias a los que escribieron,
si alguien lo quiere probar/usar/adaptar a su proyecto, adelante =D.
----------PSP---------
PSP 2001 Piano Black- placa ta-085 v2 .. desde OF 3.95 pasando por 3.9M33, 5.00M33, {muchos más} GEN, y actualmente Neur0n 6.38
---------ANDROID ***Nuevo ;) *** ------
Samsung Galaxy S Captivate de Rogers Canada {SGH-896} (Es identico al SGH-897 de USA)
Rooteado, LIBERADO POR MI funcionando en Argentina (dudas, MP)
Rom Phoenix Ultimate.. esperando CM7 estable :)
P/D.. el "printf("si ..
P/D.. el "printf("si .. pasa") o algo asi que esta en el caso del 9, era
para testear que entrara al case (poque mi numero de prueba empezaba con 9) me olvide de sacarlo xD jaja
comenten =P (si, estoy re feliz q lo logré xD)
cn colorsitos quedaria asi (para velo mejor).
----------PSP---------
PSP 2001 Piano Black- placa ta-085 v2 .. desde OF 3.95 pasando por 3.9M33, 5.00M33, {muchos más} GEN, y actualmente Neur0n 6.38
---------ANDROID ***Nuevo ;) *** ------
Samsung Galaxy S Captivate de Rogers Canada {SGH-896} (Es identico al SGH-897 de USA)
Rooteado, LIBERADO POR MI funcionando en Argentina (dudas, MP)
Rom Phoenix Ultimate.. esperando CM7 estable :)
Tres cosas
Lo primero, ¿¿por qué usas un char para almacenar números??
Lo segundo, Ese comentario que usas es de C++, deberías de usar el que es "/*comentario*/" (Sin las comillas)
Lo tercero, aquí te dejo un programa que hará eso, independientemente de la cantidad de elementos de array que existan:
El programa que te he puesto NO es funcional. Hay un error en la multipilicación de los números 2 y 4 que no logro detectar, pero es para que te hagas una idea
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
gracias che si, era un
gracias che
si, era un ejemplo del concepto de mi problema xD
te explico brebemente que estoy haciendo:
un programa que abra un archivo lleno d enumeros, lo vuelque a memoria (si, conviene hacer esto puesto a que sino tarda mucho analizando todo de disco,
conviene esperar a que vuelque a memoria y luego sí, trabajar todo con el array ese) y vaya agarrando de a X numros (t elo pregunta, que seria numero [x]) y va agarrando de a tantos numeros, se mueve uno ,y así, y analiza si es primo o no. eso ya lo tengo visto todo bien,
pero es que daba problemas al usar un int numero [x] me tiraba caracteres raros por ser un archivo uncide , no se, la cosa es que quedó bien con char, y no dio más error de eso.
peo ahroa necesitaba, par aoperaciones , volcarlo a un int.
la cosa< es que s eme habia ocurrido algo asi tmb
int unoporuno (char numero[]){
int intnumero = 0;
int ls = strlen (numero);
int i=0;
int k;
int potencia;
int previa1;
int previa2;
for(k=ls-1;k>=0;k--){
potencia = 10^i;
previa1=numero [k];
intnumero = intnumero + (previa1 *potencia);
i++;
}
intnumero = *((int *)numero);
return (intnumero);
}
pero lo hise anoche, durmiendome tratando desesperadamente de tener el problema resuelto, yy esta lleno de errores esa funcion xD ahora basandome en la que me diste vos probaré a ver que onda.
parece mucho más optimizada y se nota que no lo hisite mientras te dormias =P jajaj
en fin, muchas gracias che!
EDIT: acabo de probarlo, adaptarlo, y modificarlo, y me sigue usando cada numero[i]
como un caracter de ascii.
por ejemplo si
numero[0]=9;
me tira numero[0]=57!!
----------PSP---------
PSP 2001 Piano Black- placa ta-085 v2 .. desde OF 3.95 pasando por 3.9M33, 5.00M33, {muchos más} GEN, y actualmente Neur0n 6.38
---------ANDROID ***Nuevo ;) *** ------
Samsung Galaxy S Captivate de Rogers Canada {SGH-896} (Es identico al SGH-897 de USA)
Rooteado, LIBERADO POR MI funcionando en Argentina (dudas, MP)
Rom Phoenix Ultimate.. esperando CM7 estable :)
En C también sirve "//" para
En C también sirve "//" para poner comentarios...
sprintf
Usa el sprintf con otra variable como "buffer".
Un saludo.