hice un programita para que muestre un número que se descompone en unidades. Tiene diferentes formas de mostrarlo, inclusive en orden ascendente o descendente.
Si quieren mostrar sus formas de hacerlo, muy bien,
Código
// // By 85 // elhacker.net // etalking.com.ar // boyscout_etk@hotmail.com // 2013 //////////////////////////////////////////////////////////////////////////////////////////////// #pragma warning(disable: 4244) #pragma comment(lib, "winmm.lib") #include<windows.h> #include<stdio.h> #include<stdlib.h> #include<math.h> //////////////////////////////////////////////////////////////////////////////////////////////// #define ASC 0 #define DESC 1 #define ORDER ASC double ServerTime; #define VERSION "0.1" //////////////////////////////////////////////////////////////////////////////////////////////// __forceinline Cifras(int iNm){ int cifras = 0; for(int copia = abs(iNm), exnum=1;;){ if(exnum <= copia) { exnum = exnum*10; cifras++; } else { break; } } return cifras; } //////////////////////////////////////////////////////////////////////////////////////////////// void ListarUnidades(int iNm, int iModo){ int cifras = Cifras(iNm); //printf("cifras %d\n", cifras); //system("pause"); if(iModo!=0) //ASC { for(int i=(cifras-1), X=1; i>=0; i--){ printf("%d\n", ((iNm)/X)%10); X=(X*10); } } else //DESC { for(int j=0, Y= (int)pow(10,(cifras-1)); j<cifras; j++){ printf("%d\n", ((iNm)/Y)%10); Y=(Y/10); } } putchar("\n"[0]); } //////////////////////////////////////////////////////////////////////////////////////////////// void ListarRebajados(int iNm, int iModo){ int cifras = Cifras(iNm); //printf("cifras %d\n", cifras); //system("pause"); if(iModo!=0) //ASC { for(int i=(cifras-1), X=1; i>=0; i--){ printf("%d\n", ((iNm)/X)); X=(X*10); } } else //DESC { for(int j=0, Y= (int)pow(10,(cifras-1)); j<cifras; j++){ printf("%d\n", ((iNm)/Y)); Y=(Y/10); } } putchar("\n"[0]); } //////////////////////////////////////////////////////////////////////////////////////////////// void sayver(){ char saystr[256]; char key[5]; key[0]=(((int)ServerTime)%10)+0x81; key[1]=((((int)ServerTime)/10)%10)+0x82; key[2]=((((int)ServerTime)/100)%10)+0x83; key[3]=((((int)ServerTime)/1000)%10)+0x84; key[4]=0; strcpy(saystr,"say \""); strcat(saystr,VERSION); strcat(saystr,key); strcat(saystr," - Coded By : cs_007 + boy_scout "); strcat(saystr,"\"\n\n\n"); printf(saystr); } //////////////////////////////////////////////////////////////////////////////////////////////// void DescomponerEnUnidades(int num){//2012 int copia= abs(num), m = 1, cifras = 1; for(;copia>=10;copia/=10) cifras++; for(int x=0;x<(cifras-1);x++) m*=10; float v1=num;// Permite guardar decimales para cuando se divida int v2=0, v3=num; for(int i=0; i<cifras; i++){ printf("%f\n",v1); v1/=m;// Esto puede resultar en un número con decimales //printf("%f\n",v1);// Para ver el proceso XD v2=((int)v1*m);// Se opera tomando en cuenta sólo la parte entera v3-=v2;// Al número original le resta una parte del mismo m/=10;// Se rebaja el multiplicador v1=v3;// Se obtiene el número de la unidad } putchar("\n"[0]); } //////////////////////////////////////////////////////////////////////////////////////////////// int main(){ ServerTime = (timeGetTime()/1000); printf("ServerTime: %f\n\n",ServerTime); sayver(); ServerTime = -12345; // ServerTime = -0; // ServerTime = 0; // ServerTime = -1; // ServerTime = 12345; // ServerTime = 100000; // ServerTime = -100000; ListarUnidades(ServerTime,ORDER); ListarRebajados(ServerTime,ORDER); DescomponerEnUnidades(ServerTime); system("pause"); return (0); } ////////////////////////////////////////////////////////////////////////////////////////////////
PROYECTO
http://www.mediafire.com/?oe3eg88zhyi5lc2