Realizar un programa que permita convertir los cardinales menores a 1000 a números ordinales en letras. Por ejemplo:
Entrada: 756
Salida: septingentésimo quincuagésimo sexto
Solución:
Codigo Fuente en C
#include <stdio.h>
int main()
{
const char *unidades[] =
{"primero", "segundo", "tercero" ,"cuarto" ,"quinto" ,"sexto" ,
"septimo" ,"octavo" ,"noveno" ,"decimo"};
const char *decenas[] =
{"decimo","vigesimo", "trigesimo","cuadragesimo",
"quincuagesimo","sexagesimo", "septuagesimo",
"octogesimo", "nonagesimo"};
const char *centenas[] =
{"centesimo","ducentesimo", "tricentesimo","cuadringentesimo",
"quingentesimo", "sexcentesimo", "septingentesimo",
"octingentesimo", "noningentesimo"};
int num;
printf("Ingrese un numero entre 1-999: ");
scanf("%d",&num);
if(num>0 && num<11)
printf("\n=> %s", unidades[num-1]);
else if( num < 1000){
int c = num/100;
int d = (num - c*100)/10;
int u = num % 10;
if(u == 0 && d == 0)
printf("\n=> %s", centenas[c-1]);
else if(u == 0 && c == 0)
printf("\n=> %s", decenas[d-1]);
else if(d == 0 && c == 0)
printf("\n=> %s", unidades[u-1]);
else if(c == 0)
printf("\n=> %s %s ", decenas[d-1], unidades[u-1]);
else
printf("\n=> %s %s %s", centenas[c-1],
decenas[d-1], unidades[u-1]);
}
else
printf("El numero debe ser menor a 1000");
getchar();
return 0;
}
No hay comentarios:
Publicar un comentario