Pages

miércoles, 30 de enero de 2013

Convertir Numero Natural Cardinal a Ordinal en Letras Código en C

Problema:
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;
}

0 comentarios:

Publicar un comentario