Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Franciele

mostrar numeros escritos por extenso

Recommended Posts

olá! to com uma dúvida aqui num exercício e não sei nem como começar.. ai vai..

 

Faça um programa que leia vários numeros e mostre-os escritos por extenso.

 

eu dei uma olhada aqui nos posts que tratam disso mas todos eles tem um numero limite e esse que meu professor pediu não tem, é qualquer numero.. não sei como fazer poderiam me ajudar???

 

oq eu fiz foi o seguinte... ele abre a tela preta e qualquer numero q eu digite ele diz:"dois" ou "e e dois"..me ajudem se possível.. valeu

 

#include<stdio.h>
#include<conio.h>

int main(){
    int n, m, num;
    char centena, dezena, unidade, mil;
    
    printf("digite o numero");
    scanf("%d", &num);
    
                  //imprime centena
    switch(m){
           case 1: printf("Cento "); break;
           case 2: printf("Duzentos "); break;
           case 3: printf("Trezentos "); break;
           case 4: printf("Quatrocentos "); break;
           case 5: printf("Quinhentos "); break;
           case 6: printf("Seiscentos "); break;
           case 7: printf("Setecentos "); break;
           case 8: printf("Oitocentos "); break;
           case 9: printf("Novecentos "); break;
           }
              //imprime dezena   
    switch(m){
           case 2: printf("vinte "); break;
           case 3: printf("trinta "); break;
           case 4: printf("quarenta "); break;
           case 5: printf("cinquenta "); break;
           case 6: printf("sessenta "); break;
           case 7: printf("setenta "); break;
           case 8: printf("oitenta "); break;
           case 9: printf("noventa "); break;
           }
             //imprime a dezena
    switch(m){
           case 0: printf("dez "); break;
           case 1: printf("onze "); break;
           case 2: printf("doze "); break;
           case 3: printf("treze "); break;
           case 4: printf("quatorze "); break;
           case 5: printf("quinze "); break;
           case 6: printf("dezesseis "); break;
           case 7: printf("dezessete "); break;
           case 8: printf("dezoito "); break;
           case 9: printf("dezenove "); break;
           }
             // imprime a unidade
    switch(n){
           case 0: printf("zero"); break;
           case 1: printf("um"); break;
           case 2: printf("dois"); break;
           case 3: printf("três"); break;
           case 4: printf("quatro"); break;
           case 5: printf("cinco"); break;
           case 6: printf("seis"); break;
           case 7: printf("sete"); break;
           case 8: printf("oito"); break;
           case 9: printf("nove"); break;
           } 
    
     if(num>1000){
                 printf("Mil");
                 n= n%1000;
                 printf(" e ");
                 }
                 
                 //imprime a centena
    if(num>100){
                m = n/100;
                n = n%100;
                printf(" e ");
                }
                
                //imprime a dezena
    if(num>10){
               n = n%10;
               printf(" e ");
               }
                     
           getch();
           }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos por partes!

Aquela "telinha preta" chama-se console, ou prompt de comandos.

 

O seu professor tem que te dar um limite, pois os números naturais são infinitos.

Mas tudo bem, vamos ter em conta o limite de um inteiro (32767).

 

E tome cuidado, naqueles switch's do começo você não inicializa a variável "m".

 

Qual a relação que você encontra nos números:

1000 - Mil

435 - Quatrocentos e trinta e cinco

2549 - Dois Mil e Quinhentos e Quarenta e Nove

13 - Treze

25 - Vinte e Cinco

 

Note que você vai precisar de umas tabelas:

const char * const ExUnidade[] = {
    "Um",
    "Dois",
    "Tres",
    "Quatro",
    "Cinco",
    "Seis",
    "Sete",
    "Oito",
    "Nove"
};

const char * const ExDezena_[] = {
    "Onze",
    "Doze",
    "Treze",
    "Quatorze",
    "Quinze",
    "Dezesseis",
    "Dezesete",
    "Dezoito",
    "Dezenove"
};

const char * const ExDezena[] = {
    "Dez",
    "Vinte",
    "Trinta",
    "Quarenta",
    "Cinquenta",
    "Sessenta",
    "Setenta",
    "Oitenta",
    "Noventa"
};

const char * const ExCentena[] = {
    "Cem",
    "Duzentos",
    "Trezentos",
    "Quatrocentos",
    "Quinhentos",
    "Seiscentos",
    "Setecentos",
    "Oitocentos",
    "Novecentos"
};

E concorde comigo, que, com essas "tabelas" você consegue escrever qualquer número por extenso, certo?

O que você tem que fazer é simples:

numero <- pegar_numero_do_usuário()
dividir_os_digitos_do_número_em_um_array(numero) // se o número for 432 terás um array: [4, 3, 2]
para i em array_da_função_anterior:
    mostrar_correspondente_nas_tabelas(i)
    se não estiver no fim da lista:
        mostrar(" e ")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Victor agradeço sua colaboração.. mas sou beeeemmm iniciante nisso... você poderia me dizer onde eu coloco essas tabelas..como eu as coloco...???? só nao ta funcionando o onze, doze.. e assim por diante...eu fiz isso...

 

 

#include<stdio.h>
#include<conio.h>
int main(){
   int n, m, num, c,d,u;

   printf("digite o numero");
   scanf("%d", &num);

   m=num/1000;
   num=num % 1000;
   c=num/100;
   num=num%100;
   d=num/10;
   u=num%10;
                 //imprime centena
   switch(c){
          case 1: printf("Cento e "); break;
          case 2: printf("Duzentos "); break;
          case 3: printf("Trezentos "); break;
          case 4: printf("Quatrocentos "); break;
          case 5: printf("Quinhentos "); break;
          case 6: printf("Seiscentos "); break;
          case 7: printf("Setecentos "); break;
          case 8: printf("Oitocentos "); break;
          case 9: printf("Novecentos "); break;
          }
             //imprime dezena  
   switch(d){
          case 2: printf("vinte "); break;
          case 3: printf("trinta "); break;
          case 4: printf("quarenta "); break;
          case 5: printf("cinquenta "); break;
          case 6: printf("sessenta "); break;
          case 7: printf("setenta "); break;
          case 8: printf("oitenta "); break;
          case 9: printf("noventa "); break;
          }
            //imprime a dezena
/*    switch(num){
          case 0: printf("dez "); break;
          case 1: printf("onze "); break;
          case 2: printf("doze "); break;
          case 3: printf("treze "); break;
          case 4: printf("quatorze "); break;
          case 5: printf("quinze "); break;
          case 6: printf("dezesseis "); break;
          case 7: printf("dezessete "); break;
          case 8: printf("dezoito "); break;
          case 9: printf("dezenove "); break;
          }*/
            // imprime a unidade
   switch(u){
          case 0: printf("zero"); break;
          case 1: printf("um"); break;
          case 2: printf("dois"); break;
          case 3: printf("três"); break;
          case 4: printf("quatro"); break;
          case 5: printf("cinco"); break;
          case 6: printf("seis"); break;
          case 7: printf("sete"); break;
          case 8: printf("oito"); break;
          case 9: printf("nove"); break;
          }

    if(num>1000){
                printf("Mil");
                n= n%1000;
                printf(" e ");
                }

                //imprime a centena
   if(num>100){
               m = n/100;
               n = n%100;
               printf(" e ");
               }

               //imprime a dezena
   if(num>10){
              m = n/10;
              n = n%10;
              printf(" e ");
              }

          getch();
          }

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é uma questão de lógica.

Quando é preciso que você mostre "onze, doze, ..., dezenove"??

Quando a dezena é igual a 1, concorda??

11, 12, 13, 14, ..., 19

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é uma questão de lógica.

Quando é preciso que você mostre "onze, doze, ..., dezenove"??

Quando a dezena é igual a 1, concorda??

11, 12, 13, 14, ..., 19

 

 

humm.. sim concordo.. entendo.. mas onde eu arrumo isso no meu código pra que funcione?? me da uma ajuda ai.. tenho q entregar isso e realmente nao sei pq nao funciona...

 

valeu Victor!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu código...

Onde a dezena é igual à 1?

Coloque um outro switch lá.

 

Não se esqueça:

113 - "Cento e Treze" e não "Cento e Treze e Três". Quando você cair no caso da dezena ser 1, pule a casa das unidades.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.