Gaaah 0 Denunciar post Postado Setembro 23, 2009 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
Daniloinf 3 Denunciar post Postado Setembro 23, 2009 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
Gaaah 0 Denunciar post Postado Setembro 23, 2009 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
Daniloinf 3 Denunciar post Postado Setembro 23, 2009 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
Gaaah 0 Denunciar post Postado Setembro 23, 2009 #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
Daniloinf 3 Denunciar post Postado Setembro 23, 2009 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
Gaaah 0 Denunciar post Postado Setembro 23, 2009 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
Daniloinf 3 Denunciar post Postado Setembro 23, 2009 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
Gaaah 0 Denunciar post Postado Setembro 23, 2009 cara, eu ja coloquei mas esta acusando erro na declarao 'void printf_dezena(int)'. coloquei getchar, fflush e return. Compartilhar este post Link para o post Compartilhar em outros sites
Daniloinf 3 Denunciar post Postado Setembro 23, 2009 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
Gaaah 0 Denunciar post Postado Setembro 23, 2009 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