Hola soy muy principiante en esto y no soy capaz de terminar dos pasos que me quedan para una calculadorapara números enteros grandes 
 
Estoy intentando crear una nueva opción en el menú para llamar a una función que debe: almacenar un número grande en una variable double e imprimir el valor de tal variable double . Por ejemplo el número 1592 se imprimiría como 1.592e+003. Para ello me es OBLIGADO a crear la función: 
void ImprimirDouble (struct NumeroLargo nlargo[], int ind1), tal y como la la puse en el código. Y tampoco me dejan usar la función POW(). 
 
LA unica pista que me dan para terminar es que piense en que 1592= 2 + 5*10 + 9*102 + 1*103 y acumular en una variable double el valor total, ponderando con las potencias de 10 (las potencias de 10 se pueden ir calculando con otra variable acumuladora). y también que usase printf ("%1d" para imprimir una variable double 
 
Aqui os dejo el código que llevo desarrollado, muchas gracias a todos de ante mano, a ver si podria lograr resolver este apartado del programa. 
 
 
#include <stdio.h> 
#include <math.h> 
 
#define MAX 10 
#define MAX_LONG 99 
 
struct NumeroLargo 
{ 
int vector[MAX_LONG]; 
int cantidad; 
}; 
///////////////////////////////////// 
void Crear (struct NumeroLargo nlargo[], int ind, int lg) 
{ 
int i; 
nlargo[ind].cantidad=lg; 
for (i=0; i<lg-1 ; i++) 
{ 
nlargo[ind].vector[i]= rand()%10; 
} 
nlargo[ind].vector[lg-1]= rand()%9 + 1; //exijo que el ultimo digito sea diferente de 0 
 
} 
///////////////////////////////////////////// 
void Borrar (struct NumeroLargo nlargo[], int ind) 
{ 
nlargo[ind].cantidad=0; 
} 
///////////////////////////////////////////// 
void Imprimir (struct NumeroLargo nlargo[], int ind) 
{ 
int i, j ; 
for(j=0; j<ind ;j++ ) 
{ 
printf ("\nNumero %d es: ", j); 
 
for (i=nlargo[j].cantidad-1; i>=0 ; i--) 
{ 
printf ("%1d", nlargo[j].vector[i]); 
} 
} 
} 
 
 
 
//////////////////////////////////////////////////////////////////////////////// 
 
void ImprimirDouble (struct NumeroLargo nlargo[], int ind1) 
 
 
/////////////////////////////////////////////////////////////////////////////// 
int menu() { 
int op = 0; 
 
printf("\n\nMENU PRINCIPAL:\n\n"); 
 
printf("\t1.- Crear Numero Largo (almacenado al reves) \n"); 
printf("\t2.- Borrar Numero Largo \n"); 
printf("\t3.- Imprimir una Lista de Numeros Largos\n"); 
printf("\t4.- Imprimirlo como Double \n"); 
printf("\t5.- Sumar dos Numeros Largos \n"); 
printf("\tCUALQUIER NUMERO NEGATIVO.- Salir \n"); 
printf("\nELIJA UNA OPCION:"); 
 
scanf("%d", &op); 
getchar(); 
return op; 
} 
////////////////////////////////////////// 
 
main(int argc, char *argv[]) 
{ 
int i,j; 
int indice1, indice2,indice3, longitud; 
int op; 
 
struct NumeroLargo numeros[MAX]; 
 
// inicialmente borra todos los numeros 
for (i=0; i<MAX; i++) 
{ 
Borrar(numeros, i); 
} 
 
op = menu(); 
 
while (op >=0 ) 
{ 
if (op==1) 
{ 
printf ("Dame indice:"); 
scanf ("%d", &indice1); 
printf ("Dame longitug:"); 
scanf ("%d", &longitud); 
 
if (indice1<0 || indice1 >=MAX || longitud <0 || longitud >MAX_LONG) 
printf ("Indice o longitud negativos o mayor que el maximo permitido\n"); 
else Crear(numeros, indice1, longitud); 
} 
else if (op==2) 
{ 
printf ("Dame indice:"); 
scanf ("%d", &indice1); 
if (indice1<0 || indice1 >=MAX) printf ("Indice negativos o mayor que el maximo permitido\n"); 
else Borrar(numeros, indice1); 
} 
else if (op==3) 
{ 
printf ("Dame indice:"); 
scanf ("%d", &indice1); 
if (indice1<0 || indice1 >=MAX) printf ("Indice negativos o mayor que el maximo permitido\n"); 
else Imprimir(numeros, indice1); 
} 
 
op = menu(); 
} 
 
return 0; 
} 
   
 

