Anuncios Google

ANSI C de ARRAY CHAR a INT, ayuda

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 :)


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

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).

 

 

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;
 
}


----------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 :)

Imagen de P22

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:

#include <stdio.h>
#include <math.h>
 
int main(){
   int numeros[3] = {0, 0, 0, 0};
   int pausa;
   int aux;
   int convertido;
   int i = 0;
 
   printf("Bienvenido! Este Programa te preguntara un numero descompuesto y te lo dara completo\n");
 
   for (i = 0; i < 4; i++){
       printf("\nIntroduce el numero correspondiente a la casilla %i :", i+1);
       scanf("%d", &numeros[i]);
 
       aux = pow(10, i + 1);
       numeros[i] = numeros[i] * aux;
       printf("\n %i", numeros[i]);
   }
 
   convertido = numeros[1] + numeros[2] + numeros[3] + numeros[0];
 
   printf("El numero convertido es %i", convertido);
 
   scanf("%d", &pausa);
   return 0;
}

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 :)

Imagen de moikop

En C también sirve "//" para

En C también sirve "//" para poner comentarios...

Imagen de moikop

sprintf

Usa el sprintf con otra variable como "buffer".

Un saludo.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.