Pasar de int a vector C

RadM
21 de Diciembre del 2005
Muy buenas. Como puedo hacer para pasar un integer a vector de enteros?, es decir, pasar x ejemplo cada cifra del numero 283 ke tengo en una variable int a una posicion del vector ((( [2] [8] [3] ))),

Gracias y saludos.

miguel
21 de Diciembre del 2005
Siguiendo el ejemplo de 283, vamos a fijarnos en la siguiente estrategia:

283 entre 10 tiene cociente 28 y resto 3.
Tomamos el cociente anterior y volvemos a dividirlo entre 10.
28 entre 10 tiene cociente 2 y resto 8.
Tomamos el cociente anterior y volvemos a dividirlo entre 10.
2 entre 10 tiene cociente 0 y resto 2.
Como hemos obtenido un cociente 0 dejamos de repetir esta operación.

Si nos fijamos en los restos, hemos ido obteniendo los distintos números que componen el 283, pero al revés.

Ahora ya sabemos una forma de obtener los números que componen otro número. Sólo queda meterlos en el vector o arreglo. Una función recursiva nos vendría bien. ¿Ya lo tienes?

Un saludo.
www.maacera.com

rocachondo
21 de Diciembre del 2005
Puedes utilizar el siguiente código. He supuesto que vas a guardar los enteros en una tabla de 6 elementos porque creo recordar que el máximo entero de que se dispone es el 32000 y pico, pero de esto último no estoy seguro. De todas formas, también podrías guardarlos en una tabla creada dinámicamente con malloc, por lo que no desperdiciarías memoria.

#define NUMERO 283 /* AQUÍ PONES EL NÚMERO QUE QUIERES PASAR A LA TABLA */

void main(){

int vector[6]={0,0,0,0,0,0};
int num=NUMERO;
int i,j;
int tam=0;


for(i=0;i<6;i++)
{
if(((10^i)/num)==0&&((10^i)%num)==num)
tam++;
} /* así calculo el número de dígitos */

for(i=0;i<tam;i++)
{
tabla[i]=num/(10^(tam-i+1));
num=num%((tam-i+1)*10);
}

}

No sé si en C funciona la expresión 10^a para expresar "diez elevado a \'a\' ", pero si no funciona, no tienes más que hacerte una función que te eleve diez a cualquier número. Eso te lo dejo como ejercicio ;-)