Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Convertir un array en un numero

Estas en el tema de Convertir un array en un numero en el foro de C/C++ en Foros del Web. Hola a todos! Necesito convertir un array con tres elementos, al numero correspondiente. Ejemplo: Cita: teniendo esto: int tresnumeros[3]=( 1, 2, 3 ); Quiero conseguir ...
  #1 (permalink)  
Antiguo 06/11/2013, 15:11
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Convertir un array en un numero

Hola a todos!

Necesito convertir un array con tres elementos, al numero correspondiente.

Ejemplo:
Cita:
teniendo esto:
int tresnumeros[3]=( 1, 2, 3 );

Quiero conseguir esto:
int numeroentero=123;
Se puede hacer?

un saludo y gracias!
__________________
Tecnología y tutoriales
  #2 (permalink)  
Antiguo 06/11/2013, 17:48
Avatar de omar10594  
Fecha de Ingreso: junio-2013
Ubicación: Mexico
Mensajes: 26
Antigüedad: 10 años, 10 meses
Puntos: 3
Respuesta: Convertir un array en un numero

Podrias hacer una cadena con los numeros, y entonces usar la funcion.
Código C:
Ver original
  1. int atoi(const char *numPtr);
para pasar de caracteres a numeros, y asi poder usarlo como un entero.
  #3 (permalink)  
Antiguo 07/11/2013, 00:35
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Convertir un array en un numero

Gracias por contestar.

Como sería exactamente?

Asi?:

char tresnumeros[0]=1;
char tresnumeros[1]=2;
char tresnumeros[2]=3;

int atoi(??? char *numPatr);

No entiendo porque en los ??? pones const. Tampoco entiendo el *numPatr

Podrias explicarme un poco mas como va?

He estado buscando informacion en internet sobre el atoi pero no he encontrado ningun sitio que lo explicaran todo.

Gracias!
__________________
Tecnología y tutoriales
  #4 (permalink)  
Antiguo 07/11/2013, 01:43
Avatar de omar10594  
Fecha de Ingreso: junio-2013
Ubicación: Mexico
Mensajes: 26
Antigüedad: 10 años, 10 meses
Puntos: 3
Respuesta: Convertir un array en un numero

Bueno, disculpa por no explicarme bien, lo que te puse fue el prototipo de la funcion, const se refiere a que el parametro que requiere para funcionar, o el parametro que le daras, sera constante, const char, caracter constante, en este caso por el "*", se da a entender que es un puntero, todo esto junto se puede traducir como que le debes dar una cadena. Disculpa si no me doy a entender muy bien, es solo que nose como explicarlo, pero basicamente "const char *numPtr" es lo que recibe la funcion para trabajar, y al final de cuentas no es mas que una cadena.

Ahora bien, seria bueno que dijeras que tipo de programa haras, por lo que pones al parecer desde el inicio del programa tienes los tres numeros, lo cual me da a entender que desde el inicio tendras los numeros, debido a eso tengo una duda, si desde el inicio tienes los numeros, porque quieres convertirlos a un solo entero, si puedes declararlos como int numeroentero=132; ?

pero bueno, otra duda que tengo, es si programas en C o en C++, pues en C++ por lo que se, hay un tipo de variable string, pero en C no, por eso mi duda.

Te pongo un ejemplo del codigo, en el que se le pide al usuario tres numeros, separados, pero no los capturo como numeros, sino, como caracteres, que a su vez pertenecen a una cadena, luego uso la funcion atoi() para convertirlos en un solo entero y asi presentarlos como un solo entero, tambien hago una suma para que veas que de verdad se comporta como un solo entero.
El codigo lo pongo en C

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main( void )
  5. {
  6.     int numeroentero; // Declaramos la variable donde almacenaremos nuestro numero
  7.     int i; // Declaramos un contador para nuestro ciclo for
  8.     char strnumero[3]; // Declaramos la cadena con la longitud de los numeros que capturaremos
  9.     for( i=0 ; i<3 ; i++ )
  10.     {
  11.         fflush(stdin); // Limpiamos buffer del teclado
  12.         printf("Introduce el caracter %d: ",i+1); // Pedimos el caracter
  13.         scanf("%c",&strnumero[i]); // Capturamos el caracter en la posicion "i" de la cadena
  14.     }
  15.     numeroentero = atoi(strnumero); // Los numeros capturados como caracter los pasamos a enteros
  16.     printf("%d\n",numeroentero); // Imprimimos el numero entero
  17.     numeroentero += 100; // Hacemos una operacion para que veas que se comporta como entero
  18.     printf("%d\n",numeroentero); // Imprimimos el nuevo valor
  19.     system("PAUSE");
  20.     return 0;
  21. }

Tambien puedes esperar otras respuestas, a lo mejor alguien te tiene una mejor solucion.

~saludos~
  #5 (permalink)  
Antiguo 07/11/2013, 02:29
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: Convertir un array en un numero

En C, cuando creas una cadena de caracteres, en el tamaño debes tener en cuenta que el terminador de cadena (código ASCII 0) también ocupa un espacio. Este código de fin de cadena indica a las funciones que tratan con cadenas de caracteres (como atoi) dónde finaliza la cadena a tratar. Así, en la línea 8 deberías declarar

Código C:
Ver original
  1. char strnumero[4]

y, por supuesto, asegurarte de que strnumro[4] vale 0.

Saludos,
  #6 (permalink)  
Antiguo 07/11/2013, 12:01
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Convertir un array en un numero

Cita:
Bueno, disculpa por no explicarme bien, lo que te puse fue el prototipo de la funcion, const se refiere a que el parametro que requiere para funcionar, o el parametro que le daras, sera constante, const char, caracter constante, en este caso por el "*", se da a entender que es un puntero, todo esto junto se puede traducir como que le debes dar una cadena. Disculpa si no me doy a entender muy bien, es solo que nose como explicarlo, pero basicamente "const char *numPtr" es lo que recibe la funcion para trabajar, y al final de cuentas no es mas que una cadena.
Nada que disculpar!

Cita:
Ahora bien, seria bueno que dijeras que tipo de programa haras, por lo que pones al parecer desde el inicio del programa tienes los tres numeros, lo cual me da a entender que desde el inicio tendras los numeros, debido a eso tengo una duda, si desde el inicio tienes los numeros, porque quieres convertirlos a un solo entero, si puedes declararlos como int numeroentero=132; ?
El programa que quiero hacer es el siguiente:

Me dan un numero "camuflado" en figuras mas otro numero tambien camuflado y el resultado tambien camuflado.

Algo asi:

RomboTrianguloCuadrado+RomboCirculo=TrianguloCuadr adoRombo.

El programa lo que debe hacer es desdencroptar eso y ver cuanto vale cada figura.

El algoritmo que he creado es el siguiente:

Crear tres numeros hechos de los valores de 4 bucles for del 0 al 9 para que me cree los numeros, y que luego una vez creado el string convertirlos a int para sumarlos y comprobar si la suma coincide.

El codigo que tengo hasta ahora es este:
Código:
for (i=0;i<=9;i++){
        for (j=0;j<=9;j++){
            for (k=0;k<=9;k++){
                for (l=0;l<=9;l++){
                    num1[0]=i; //i corresponderia alRombo
                    num1[1]=j;//j sseria el Triangulo
                    num1[2]=k;//k seria el cuadrado
                    
                    num2[0]=i;//i el rombo
                    num2[1]=l;//l seria el circulo
                    
                    result[0]=j;//
                    result[1]=k;
                    result[2]=i;

// Ahora sumaria num1 convertido a int + num2 convertido a int y comprobaria si el resultado corresponde con result convertido a int
                    
                    }
                }
            }
Cita:

pero bueno, otra duda que tengo, es si programas en C o en C++, pues en C++ por lo que se, hay un tipo de variable string, pero en C no, por eso mi duda.
Programo ( o lo intento ;) en C++

Cita:
Te pongo un ejemplo del codigo, en el que se le pide al usuario tres numeros, separados, pero no los capturo como numeros, sino, como caracteres, que a su vez pertenecen a una cadena, luego uso la funcion atoi() para convertirlos en un solo entero y asi presentarlos como un solo entero, tambien hago una suma para que veas que de verdad se comporta como un solo entero.
El codigo lo pongo en C
Creo que con eso podré hacer lo que quiero lo voy a probar.

Un saludo y muchas gracias
__________________
Tecnología y tutoriales
  #7 (permalink)  
Antiguo 07/11/2013, 13:02
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 9 meses
Puntos: 13
Respuesta: Convertir un array en un numero

Creo que él se refiere a esto.

Código C:
Ver original
  1. /*
  2.  referencia: http://stackoverflow.com/questions/11201015/converting-an-integer-array-into-a-number
  3. */
  4.  
  5. #include <stdio.h>
  6.  
  7. int
  8. main (void)
  9. {
  10.   int arraynumber[4] = {1, 2, 3};
  11.   int sizearray = sizeof arraynumber / sizeof (int);
  12.  
  13.   int finalnumber = 0;
  14.   int numtmp = 0;
  15.   int countfor = 0;
  16.    
  17.   for (; countfor < sizearray; countfor++)
  18.   {
  19.     numtmp = arraynumber[countfor];
  20.    
  21.     if (numtmp != 0)
  22.     {
  23.       while (numtmp > 0)
  24.       {
  25.         finalnumber *= 10;
  26.         numtmp /= 10;
  27.       }
  28.      
  29.       finalnumber += arraynumber[countfor];
  30.     }
  31.     else
  32.     {
  33.       finalnumber *= 10;
  34.     }
  35.   }
  36.  
  37.   printf("%i", finalnumber);
  38.  
  39.   return 0;
  40. }

El código no es mío, solo le hice algunas arreglos para pasarlo a C, igual dejé la referencia, la forma de como funciona es lógica. Hay más formas, recuerdo hace bastante hacer esto con macro, era más fácil, si me recuerdo o consigo el código, lo posteo.

Saludos.

Etiquetas: int, numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:31.