Ir para conteúdo

POWERED BY:

Arquivado

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

Gaaah

[Resolvido] Numeros por extenso

Recommended Posts

Preciso fazer um programa em c, que imprima por extenso um numero digitado de 0 a 1.500, porem posso usar apenas if/ else e, ou, switch/case, estou tentando fazer o programa, mas ta dando erro, nao sei o que acontece, por favor me ajudem !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Como você pensou na solução deste problema?

A lógica dele não é complicada, apenas escrever-lo que será um pouco trabalhoso.

 

Poste oque você já fez, que agete te da uma força.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Como você pensou na solução deste problema?

A lógica dele não é complicada, apenas escrever-lo que será um pouco trabalhoso.

 

Poste oque você já fez, que agete te da uma força.

 

cara, eu declarei centenas, dezenas e unidades, mas quando declaro milhar nao esta compilando, nao sei oqe esta dando e estou com dificuldade em fazer com qe o programa imprima o numero por extenso, por ex: printf"Cento e cinquenta";

Compartilhar este post


Link para o post
Compartilhar em outros sites

printf"Cento e cinquenta"; ?

 

o certo é printf("Cento e cinquenta");

 

Mas acho que você apenas digitou errado aqui, qual erro o compilador esta acusando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>
#include<iostream>
#include <string>
#include <conio.h>
using namespace std;
int main(){
    int a, b, c, num;
    string cent, dez, uni, mil;
    
    
    printf("digite um numero :\n");
    scanf("%d",&num);
    
    a=num/1000;
    num=num%1000;
    a=num/100;
    num=num%100;
    b=num/10;
    num=num%10;
    c=num/1;
    
    if(a>9)
    printf("\n numero invalido\n");
    else 
    {
         if(a==1&&b==0&&c==0)
         printf("\nCem\n");
         else if(a==0&&b==0&&c==0)
         printf("\nZero\n");
         else
    {
         if(a>=1&&b==0&&c==0)
                       
    switch (a)
    {
           case 1 : cent="Cento ";
           case 2 : cent="Duzentos ";
           case 3 : cent="Trezentos ";
           case 4 : cent="Quatrocentos ";
           case 5 : cent="Quinhentos ";
           case 6 : cent="Seiscentos ";
           case 7 : cent="Setecentos ";
           case 8 : cent="Oitocentos ";
           case 9 : cent="Novecentos ";
           break;
           }
           
           else
           {
               switch(a)
           {
           case 1 : cent="Cento e ";
           case 2 : cent="Duzentos e ";
           case 3 : cent="Trezentos e ";   
           case 4 : cent="Quatrocentos e ";
           case 5 : cent="Quinhentos e ";
           case 6 : cent="Seiscentos e ";
           case 7 : cent="Setecentos e ";
           case 8 : cent="Oitocentos e ";
           case 9 : cent="Novecentos e ";
           break;
           }

   if(b==1)
   {
        switch(c)
        {
         case 0 : dez="Dez ";
         case 1 : dez="Onze ";
         case 2 : dez="Doze ";
         case 3 : dez="Treze ";
         case 4 : dez="Quatorze ";
         case 5 : dez="Quinze ";
         case 6 : dez="Dezesseis ";
         case 7 : dez="Dezessete ";
         case 8 : dez="Dezoito ";
         case 9 : dez="Dezenove ";
         break;
         }
}      
   else if(b>1)        
   {
        switch (B)
    {
        case 2 : dez="vinte";
        case 3 : dez="trinta";
        case 4 : dez="quarenta";
        case 5 : dez="cinquenta";
        case 6 : dez="sessenta";
        case 7 : dez="setenta";
        case 8 : dez="oitenta";
        case 9 : dez="noventa";
        break;
        }
        switch (c)
        {
        case 1 : uni="e um";
        case 2 : uni="e dois";
        case 3 : uni="e tres";
        case 4 : uni="e quatro";
        case 5 : uni="e cinco";
        case 6 : uni="e seis";
        case 7 : uni="e sete";
        case 8 : uni="e oito";
        case 9 : uni="e nove";
        }
}      
  
        else
        {
            switch (c)
            {
                   case 1 : uni="um";
                   case 2 : uni="dois";
                   case 3 : uni="tres";
                   case 4 : uni="quatro";
                   case 5 : uni="cinco";
                   case 6 : uni="seis";
                   case 7 : uni="sete";
                   case 8 : uni="oito";
                   case 9 : uni="nove";
                   break;
                   }
}
cout<<cent<< dez<< uni;  //escreve dados armazenados cent, dez, uni

} getch ();
fflush (stdin);
return 0;
}

fiiz dessa maneira, porem na ultima linha esta dando erro, nao sei o que acontece e tambem nao consegui declarar milhar. me ajude

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caramba, sua solução ficou complexa... xD

 

Tem muita coisa errada por ai, por exemplo, se você que imprimir a casa dos milhares (seguindo sua lógica) você terá que criar também uma variavel x para pegar o valor da divisão de n por 1000, mas existe uma maneira muito mais simples de fazer isso, segue ai um código em C para te ajudar.

 

#include<stdio.h>
#include<stdlib.h>

// Imprime o valor da centena por extenso (novecentos, oitocentos...)
void printf_centena(int m);
// Imprime o valor da dezena por extenso (noventa, oitenta...)
void printf_dezena(int m);
// Imprime o valor da unidade por extenso (nove, oito...)
void printf_unidade(int m);

int main(){

        int n, m;
        printf("Digite um número:\n");

        scanf("%d", &n);
        // Assumindo que o numero sempre sera menor que 1500
        if(n > 1000){
                printf("mil ");
                n = n%1000;
                printf("e ");
        }
        
        // imprime a centena
        if(n > 100){
                m = n/100;
                printf_centena(m);
                n = n%100;
                printf("e ");
        }
        
        // imprime a dezena
        if(n > 10){
                m = n/10;
                printfDezena(m);
                n = n%10;
                printf("e ");
        }
        
        // imprime a unidade
        printf_unidade(n);
}

Neste código basta você implementar os métodos que imprime os numeros por extenso.

Testa ele ai, e vê no que dá... xP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou usando o compilador Dev-C++, fiz passo a passo da forma em qe você me mandou, porem o programa nao esta compilando, ele nao da erro e nao abre a tela de compilação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você implementou os métodos que imprime os números por extenso?

 

coloque um getchar(); no final do programa para ele parar depois que você digitar o número.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você chegou a implementar os métodos?

Você programa a pouco tempo?

 

Aqui vai outro código, esta funfando mas não traca os casos especiais das dezenas (onze, doze...), mas não vou fazer sua tarefa de casa... xD

 

#include<stdio.h>
#include<stdlib.h>

// Imprime o valor da centena por extenso (novecentos, oitocentos...)
void print_centena(int m){
    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 o valor da dezena por extenso (noventa, oitenta...)
void print_dezena(int m){
	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;
        break;
    }
}
// Imprime o valor da unidade por extenso (nove, oito...)
void print_unidade(int m){
	switch (m)
	{
		case 1 : printf("um"); break;
		case 2 : printf("dois"); break;
		case 3 : printf("tres"); 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;
	}
}

int main(){

        int n, m;
        printf("Digite um número:\n");

        scanf("%d", &n);
        // Assumindo que o numero sempre sera menor que 1500
        if(n > 1000){
                printf("mil ");
                n = n%1000;
                printf(" e ");
        }
        
        // imprime a centena
        if(n > 100){
                m = n/100;
                print_centena(m);
                n = n%100;
                printf(" e ");
        }
        
        // imprime a dezena
        if(n > 10){
                m = n/10;
                print_dezena(m);
                n = n%10;
                printf(" e ");
        }
        
        // imprime a unidade
        print_unidade(n);
        getchar();
        getchar();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

programo a menos de um ano...esse exercicio eh um trabalhinho que tenho para fazer, eu incrementei todos os metodos qe faltavam, agora sim, o programa funcionou, mt obrigado pelo ajuda !

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.