Franciele 0 Denunciar post Postado Outubro 3, 2009 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
VictorCacciari 42 Denunciar post Postado Outubro 3, 2009 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
Franciele 0 Denunciar post Postado Outubro 10, 2009 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
VictorCacciari 42 Denunciar post Postado Outubro 10, 2009 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
Franciele 0 Denunciar post Postado Outubro 11, 2009 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
VictorCacciari 42 Denunciar post Postado Outubro 11, 2009 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