Guest - Lucas - Postado Maio 22, 2006 Denunciar Share Postado Maio 22, 2006 Eu tenho o seguinte código, que me retorna um número inserido por extenso:"#include <stdio.h># include <stdlib.h># include <string.h>int extenso(int x){char unidades[] = {'zero', 'um', 'dois', 'tres', 'quatro', 'cinco', 'seis', 'sete','oito', 'nove'};char ate19[]={'dez', 'onze', 'doze', 'treze', 'quatorze', 'quinze','dezesseis', 'dezessete', 'dezoito', 'dezenove' };char dezenas[] ={'dez', 'vinte', 'trinta', 'quarenta', 'cinquenta', 'sessenta', 'setenta','oitenta', 'noventa'};char centenas[]= {'cem', 'cento', 'duzentos', 'trezentos', 'quatrocentos', 'quinhentos','seiscentos', 'setecentos', 'oitocentos', 'novecentos'};char milhares[] ={'mil', 'milhao', 'bilhao', 'trilhao'};if (x < 10)printf("%s",unidades[x]);if (x < 20)printf("%s", ate19[x - 10]);if (x < 100) {if (x % 10 == 0)return dezenas[x / 10];elseprintf("%s e %s"), dezenas[x / 10], unidades[x % 10];}if (x < 1000) {if (x % 100 == 0)return centenas[x / 100];elseprintf("%s %s %s", unidades[x / 100], centenas[1], extenso(x % 100));}if (x < 1000000) {if (x % 1000 == 0)printf("%s e %s", extenso(x / 1000), milhares[0]);elseprintf("%s %s %s", extenso(x / 1000), milhares[0],extenso(x % 1000));}if (x < 1000000000) {if (x % 1000000 == 0)printf("%s %s", extenso(x / 1000000), milhares[1]);elseprintf("%s %s %s", extenso(x / 1000000), milhares[1], extenso(x % 1000000));}}int main(void){ int numero; scanf("%d", & numero); extenso(numero); system("PAUSE");} "Alguém poderia me dar uma ajudinha nesse código, é questão de vida ou morte!!!! :huh: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marshall Postado Maio 22, 2006 Denunciar Share Postado Maio 22, 2006 Ajuda em quê ? O que você quer saber ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Maio 23, 2006 Denunciar Share Postado Maio 23, 2006 É que dá alguns erros... Se existe algum código um pouco mais esperto ou fácil de se fazer isso, etc... É que eu preciso disso com urgência, é um trabalho da facu e se eu não entregar, vou fazer essa matéria pela 5ª vez, hehehe...Abraço e valeu! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Maio 23, 2006 Denunciar Share Postado Maio 23, 2006 É que dá alguns erros... Se existe algum código um pouco mais esperto ou fácil de se fazer isso, etc... É que eu preciso disso com urgência, é um trabalho da facu e se eu não entregar, vou fazer essa matéria pela 5ª vez, hehehe...Abraço e valeu!Principalmente na declaração dos vetores de strings, aí é que eu não tou conseguindo fazer funcionar... E se você achar algum erro, me dá um tok, cara, por favor!Abç! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marshall Postado Maio 24, 2006 Denunciar Share Postado Maio 24, 2006 Primeiro.. substitua as aspas simples por aspas duplas das suas strings..E inicializa as strings assim:char milhares[][8] ={"mil", "milhao", "bilhao", "trilhao"};Porquê esse array é bidimensional... O primeiro pode deixar em branco porquê o compilador verifica esse limite, mas o segundo tem que colocar com as letras das strings.. o maior número possível entende ? (Incluindo o terminador nulo que C inclui no fim da string). Se não quiser entender... bota 15 em todos que vai passar...O seu 'include' ... os 2 últimos includes estão separados do '#' ... junte-os.scanf("%d", & numero);Essa linha aí... junte o '&' com o 'numero'... isso vai passar o endereço da variável para o scanf poder acessá-la com um ponteiro.O valor 'return' da sua função 'extenso' ... tem que ser do tipo int (você declarou isso na função) e você está retornando um valor char. Nada que um casting não resolva... ficaria assim:return int(dezenas[x / 10]);Acho que erros sintáticos só tem esses.... não sei como está a lógica do seu programa.. não li 'a fundo'....Ahn.. e uma dica... se essa matéria é a 5º vez que você repete, talvez não esteja no curso certo. ;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Deus_do_Metal Postado Maio 24, 2006 Denunciar Share Postado Maio 24, 2006 O foda é que é somente nessa matéria, as demais vão de boa, é o maldito do professor, aquele idiota... Péssimo, por sinal... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest - Lucas -
Eu tenho o seguinte código, que me retorna um número inserido por extenso:
"#include <stdio.h>
# include <stdlib.h>
# include <string.h>
int extenso(int x){
char unidades[] = {'zero', 'um', 'dois', 'tres', 'quatro', 'cinco', 'seis', 'sete','oito', 'nove'};
char ate19[]={'dez', 'onze', 'doze', 'treze', 'quatorze', 'quinze','dezesseis', 'dezessete', 'dezoito', 'dezenove' };
char dezenas[] ={'dez', 'vinte', 'trinta', 'quarenta', 'cinquenta', 'sessenta', 'setenta','oitenta', 'noventa'};
char centenas[]= {'cem', 'cento', 'duzentos', 'trezentos', 'quatrocentos', 'quinhentos','seiscentos', 'setecentos', 'oitocentos', 'novecentos'};
char milhares[] ={'mil', 'milhao', 'bilhao', 'trilhao'};
if (x < 10)
printf("%s",unidades[x]);
if (x < 20)
printf("%s", ate19[x - 10]);
if (x < 100) {
if (x % 10 == 0)
return dezenas[x / 10];
else
printf("%s e %s"), dezenas[x / 10], unidades[x % 10];
}
if (x < 1000) {
if (x % 100 == 0)
return centenas[x / 100];
else
printf("%s %s %s", unidades[x / 100], centenas[1], extenso(x % 100));
}
if (x < 1000000) {
if (x % 1000 == 0)
printf("%s e %s", extenso(x / 1000), milhares[0]);
else
printf("%s %s %s", extenso(x / 1000), milhares[0],extenso(x % 1000));
}
if (x < 1000000000) {
if (x % 1000000 == 0)
printf("%s %s", extenso(x / 1000000), milhares[1]);
else
printf("%s %s %s", extenso(x / 1000000), milhares[1], extenso(x % 1000000));
}
}
int main(void){
int numero;
scanf("%d", & numero);
extenso(numero);
system("PAUSE");
}
"
Alguém poderia me dar uma ajudinha nesse código, é questão de vida ou morte!!!! :huh:
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.