none
Números romanos em linguagem C

    Question

  • Faço o curso de engenharia e tenho uma lista de exercícios da disciplina de algoritmos para resolver. E tem um exercício da lista que eu não consigo fazer de jeito nenhum, envolve números romanos. Gostaria de pedir, para quem souber e puder, que me mostre como faz o exercício abaixo:

     

    "Faça um programa em linguagem C que lê um número inteiro positivo inferior a 4000 e imprime o mesmo valor usando a notação de números romanos (com os caracteres M D C L X V I). Exemplo: se o usuário digitar o número 1, o programa deverá imprimir I."


    O pessoal me ajudou até e me passou esse link: http://www.computing.net/answers/programming/roman-numeral-conversion-c/17391.html

    É bem parecido com o que eu preciso, porém o código desse link contém o comando while que eu ainda não aprendi. E ele também usa um comando "num1 -= X", sendo X um número qualquer, ainda não aprendi isso também. Então creio que não possa ser utilizado.

    Obs: comandos que aprendi foram: int, float, char, scanf, printf, if, else if, else, switch. Além das operações ==, >=, <=, %, etc. E o programa que usamos é o Dev-C++ (vou em File -> New Project -> Console Application -> C++ Project -> Ok).

    Saturday, October 02, 2010 6:07 PM

All replies

  • Consegui fazer, quem algum dia precisar, deixo aqui minha contribuição:

     

     

    #include <cstdlib>
    #include <iostream>

    using namespace std;

    int main(int argc, char *argv[])

    {
    int a,b,c,d,e;
    printf("Trabalho de Algoritmos: digite um numero entre 1 e 3999:");
    scanf("%i",&e);
    if (e<=0||e>3999)
           {
           printf ("ERRO: Numero Invalido! \n");
           printf ("Digite novamente um numero entre 1 e 3999:");
           scanf ("%i",&e);
           }

    a = (e/1000)*1000;
    b = ((e/100)%10)*100;
    c = ((e/10)%10)*10;
    d = ((e/1)%10)*1;

    if (a == 1000) printf("M");
    else if (a == 2000) printf("MM");
    else if (a == 3000) printf("MMM");

    if (b == 100) printf("C");
    else if (b == 200) printf("CC");
    else if (b == 300) printf("CCC");
    else if (b == 400) printf("CD");
    else if (b == 500) printf("D");
    else if (b == 600) printf("DC");
    else if (b == 700) printf("DCC");
    else if (b == 800) printf("DCCC");
    else if (b == 900) printf("CM");


    if (c == 10) printf("X");
    else if (c == 20)  printf("XX");
    else if (c == 30)  printf("XXX");
    else if (c == 40)  printf("XL");
    else if (c == 50)  printf("L");
    else if (c == 60)  printf("LX");
    else if (c == 70)  printf("LXX");
    else if (c == 80)  printf("LXXX");
    else if (c == 90)  printf("XC");

    if (d == 1) printf("I");
    else if (d == 2) printf("II");
    else if (d == 3) printf("III");
    else if (d == 4) printf("IV");
    else if (d == 5) printf("V");
    else if (d == 6) printf("VI");
    else if (d == 7) printf("VII");
    else if (d == 8) printf("VIII");
    else if (d == 9) printf("IX");

      system("PAUSE");
        return EXIT_SUCCESS;

    }

    • Edited by tbrondani Sunday, October 03, 2010 6:51 PM correção
    Sunday, October 03, 2010 4:54 PM