Ayuda con codigo. Dar un numero en letras
Publicado por Mauricio (1 intervención) el 25/02/2013 04:21:40
Quiero pasar un numero a escrito, pero tengo un problemas con los millones , si escribo 1 000 000 me arrija un millon mil. e que el problema es que al restarle p, queda como 3 entonces me imprime el mil. Lo que no se es como solucionarlo sin que me afecte los otros resultados
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <stdio.h>
main()
{
int num[10];
int i,j=1,p,r;
printf("Introduce un numero no mayor a 999,999,999: ");
for(i=0;(num[i]=getchar()) != '\n';i++);
if(i>6&&i<=9) p=6;
else if(i>3&&i<=6){ p=3; j++; }
else if(i>0&&i<=3){ p=0; j+=2; }
for(j=j;j<=3;j++)
{
if((i==3 || i==6)||(num[0]!=' ' || num[3]!=' ' || num[6]!=' ') )
switch(num[i-(3+p)])
{
case'1':if((num[(i-(3+p))+1]!='0') || (num[(i-(3+p))+2]!='0'))
printf("ciento ");
else
printf("cien ");
break;
case'2':printf("doscientos ");break;
case'3':printf("trescientos ");break;
case'4':printf("cuatrocientos ");break;
case'5':printf("quinientos ");break;
case'6':printf("seiscientos ");break;
case'7':printf("setecientos ");break;
case'8':printf("ochocientos ");break;
case'9':printf("novecientos ");break;
}
switch(num[i-(p+2)])
{
case'1':switch(num[(i-(p+2))+1])
{
case'0':printf("diez ");break;
case'1':printf("once ");break;
case'2':printf("doce ");break;
case'3':printf("trece ");break;
case'4':printf("catorce ");break;
case'5':printf("quince ");break;
case'6':printf("diesciseis ");break;
case'7':printf("diescisiete ");break;
case'8':printf("diesciocho ");break;
case'9':printf("diescinueve ");break;
}break;
case'2':if(num[(i-(p+2))+1]=='0') printf("veinte ");
else printf("veinti"); break;
case'3':printf("treinta "); if(num[(i-1)-p]!='0') printf("y "); break;
case'4':printf("cuarenta "); if(num[(i-1)-p]!='0') printf("y "); break;
case'5':printf("cincuenta "); if(num[(i-1)-p]!='0') printf("y "); break;
case'6':printf("secenta "); if(num[(i-1)-p]!='0') printf("y "); break;
case'7':printf("setenta "); if(num[(i-1)-p]!='0') printf("y "); break;
case'8':printf("ochenta "); if(num[(i-1)-p]!='0') printf("y "); break;
case'9':printf("noventa "); if(num[(i-1)-p]!='0') printf("y "); break;
}
if(num[i-(p+2)]!='1')
switch(num[(i-1)-p])
{
case'1':
if(p>=3) printf("un ") ;
else printf("uno");
break;
case'2':printf("dos ");break;
case'3':printf("tres ");break;
case'4':printf("cuatro ");break;
case'5':printf("cinco ");break;
case'6':printf("seis ");break;
case'7':printf("siete ");break;
case'8':printf("ocho ");break;
case'9':printf("nueve ");break;
}
if(p==6 && num[0]=='0' && p==6 && num[1]=='0' && p==6 && num[2]=='0');
else if(p==6 && num[0]=='1' && i==7) printf("millon ");
else if(p==6) printf("millones ");
if(p==3 && num[p]!=' '|| p==3 && num[p+1]!='0' || p==3 && num[p+2]!='0')printf("mil ");
p-=3;
}
getchar();
return 0;
}
Valora esta pregunta


0