Ir para conteúdo
Fórum Script Brasil
  • 0

AJUDA: TRABALHO PRATICO DE AEDS - LINGUAGEM C


Vinicius Marques

Pergunta

Tenho um trabalho pratico na faculdade valendo 10 pontos. O professor quer que façamos um programa que transforme algarismos em um numero escrito por extenso. 

Ex:

1 um 

2 dois...

102 cento e dois...

E esse programa precisa realizar essa função até a centena de milhão. Cheguei a fazer a codificação baseada em switch/case. Mas estou tendo dificuldades para reproduzir a conjunção "e" no meio da numeração extensa, já que em certas situações a numeração não cabe a conjunção.

Durante a compilação: "cento noventa dois milhoes novecentos quarenta sete mil trezentos doze"

Como deve ficar: "cento e noventa e dois milhoes novecentos e quarenta e sete mil trezentos e doze"

Seria muito fácil colocar tipo:

case 9 << cout "cento e ";break; 

mas, o problema é que há condicionantes, e não estou conseguindo trabalhar com a estrutura de decisão if/else. 

O problema também acontece quando há uso de dígitos 0, pois não soube declarar que o sistema deve optar por imprimir "cem" no lugar de "cento"

 

Segue o código que estruturei, se alguém puder, por favor revisar meu código ou me dar uma breve explicação do que fazer para resolver isso. Ficarei muito grato!

 

#include <iostream>
using namespace std;

int main ()

{
    int cM,dM, uM, cm, dm, um, c, d, u;
    cin >> cM >> dM >> uM>> cm >> dm >> um >> c >> d >> u;

    switch (cM)
    {
        case 9: cout << "novecentos ";break;
        case 8: cout << "oitocentos ";break;
        case 7: cout << "setecentos ";break;
        case 6: cout << "seiscentos ";break;
        case 5: cout << "quinhentos ";break;
        case 4: cout << "quatrocentos ";break;
        case 3: cout << "trezentos ";break;
        case 2: cout << "duzentos "; break;
        case 1: cout << "cento "; break;
    }
    switch (dM)
        {
        case 9: cout << "noventa ";break;
        case 8: cout << "oitenta ";break;
        case 7: cout << "setenta ";break;
        case 6: cout << "sessenta ";break;
        case 5: cout << "cinquenta ";break;
        case 4: cout << "quarenta ";break;
        case 3: cout << "trinta ";break;
        case 2: cout << "vinte "; break;


        if (dm=1)
        case 1:
          switch (um)
        {
        case 9: cout << "dezenove mil ";break;
        case 8: cout << "dezoito mil ";break;
        case 7: cout << "dezesete mil ";break;
        case 6: cout << "dezeseis mil ";break;
        case 5: cout << "quinze mil ";break;
        case 4: cout << "quatorze mil ";break;
        case 3: cout << "treze mil ";break;
        case 2: cout << "doze mil "; break;
        case 1: cout << "onze mil ";break;
        }
        }

    if (dM!=1)
    switch (uM)
        {
        case 9: cout << "nove milhoes ";break;
        case 8: cout << "oito milhoes ";break;
        case 7: cout << "sete milhoes ";break;
        case 6: cout << "seis milhoes ";break;
        case 5: cout << "cinco milhoes ";break;
        case 4: cout << "quatro milhoes ";break;
        case 3: cout << "tres milhoes ";break;
        case 2: cout << "dois milhoes "; break;
        case 1: cout << "um milhoes ";break;

    }

    switch (cm)
    {
        case 9: cout << "novecentos ";break;
        case 8: cout << "oitocentos ";break;
        case 7: cout << "setecentos ";break;
        case 6: cout << "seiscentos ";break;
        case 5: cout << "quinhentos ";break;
        case 4: cout << "quatrocentos ";break;
        case 3: cout << "trezentos ";break;
        case 2: cout << "duzentos "; break;
        case 1: cout << "cento "; break;
    }
    switch (dm)
        {
        case 9: cout << "noventa ";break;
        case 8: cout << "oitenta ";break;
        case 7: cout << "setenta ";break;
        case 6: cout << "sessenta ";break;
        case 5: cout << "cinquenta ";break;
        case 4: cout << "quarenta ";break;
        case 3: cout << "trinta ";break;
        case 2: cout << "vinte "; break;


        if (dm=1)
        case 1:
          switch (um)
        {
        case 9: cout << "dezenove mil ";break;
        case 8: cout << "dezoito mil ";break;
        case 7: cout << "dezesete mil ";break;
        case 6: cout << "dezeseis mil ";break;
        case 5: cout << "quinze mil ";break;
        case 4: cout << "quatorze mil ";break;
        case 3: cout << "treze mil ";break;
        case 2: cout << "doze mil "; break;
        case 1: cout << "onze mil ";break;
        }
        }

    if (dm!=1)
    switch (um)
        {
        case 9: cout << "nove mil ";break;
        case 8: cout << "oito mil ";break;
        case 7: cout << "sete mil ";break;
        case 6: cout << "seis mil ";break;
        case 5: cout << "cinco mil ";break;
        case 4: cout << "quatro mil ";break;
        case 3: cout << "tres mil ";break;
        case 2: cout << "dois mil "; break;
        case 1: cout << "um mil ";break;

    }

    switch (c)
    {
        case 9: cout << "novecentos ";break;
        case 8: cout << "oitocentos ";break;
        case 7: cout << "setecentos ";break;
        case 6: cout << "seiscentos ";break;
        case 5: cout << "quinhentos ";break;
        case 4: cout << "quatrocentos ";break;
        case 3: cout << "trezentos ";break;
        case 2: cout << "duzentos "; break;
        case 1: cout << "cento "; break;
    }
    switch (d)
        {
        case 9: cout << "noventa ";break;
        case 8: cout << "oitenta ";break;
        case 7: cout << "setenta ";break;
        case 6: cout << "sessenta ";break;
        case 5: cout << "cinquenta ";break;
        case 4: cout << "quarenta ";break;
        case 3: cout << "trinta ";break;
        case 2: cout << "vinte "; break;


        if (d=1)
        case 1:
          switch (u)
        {
        case 9: cout << "dezenove";break;
        case 8: cout << "dezoito";break;
        case 7: cout << "dezesete";break;
        case 6: cout << "dezeseis";break;
        case 5: cout << "quinze";break;
        case 4: cout << "quatorze";break;
        case 3: cout << "treze";break;
        case 2: cout << "doze"; break;
        case 1: cout << "onze";break;
        }
        }

    if (d!=1)
    switch (u)
        {
        case 9: cout << "nove";break;
        case 8: cout << "oito";break;
        case 7: cout << "sete";break;
        case 6: cout << "seis";break;
        case 5: cout << "cinco";break;
        case 4: cout << "quatro";break;
        case 3: cout << "tres";break;
        case 2: cout << "dois"; break;
        case 1: cout << "um";break;

    }

        }

 

Editado por Vinicius Marques
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá, tudo bem?

 

Então, observe que humanamente falamos 'e' quando sabemos previamente que a grandeza continua em sua ordem decrescente de grandeza sempre omitindo o 'e' quando a unidade é zero.

Por exemplo:

424 -- Quatrocentos e vinte e quatro

404 -- Quatrocentos e 4.    <--[ ! ] Omitindo nas dezenas 10.

400 -- Quatrocentos.          <--[ ! ] Omitindo nas dezenas 10 e nas unidades 0.

Ou seja, quando as unidades decimais, de qualquer ordem tem valor 0, não nos pronunciamos com 'e'. 

 

O.K. !? Tchau.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...