Descomponer en unidades

Iniciado por 85, 30 Marzo 2013, 12:31 PM

0 Miembros y 1 Visitante están viendo este tema.

85

Hola,
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,  >:D
Código (cpp) [Seleccionar]


//
// 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
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/