Ir ao conteúdo
  • Cadastre-se

Anthoni

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

1
  1. Pessoal , estou fazendo um trabalho do curso, em que o usuario digita um valor em real e o programa exibe o valor digitado em extenso, então se o usuario digita 1881,56, o programa deve exibir, Mil, oitocentos e oitenta e um Reais e cinquenta e seis centavos, o o algoritmo ficou gigante, acho que dava pra resumir muita coisa, mas sou iniciante ainda, e nao aprendi muito de vetores e funções, minha lógica nao é tão formada ainda, decidi fazer o programa, focando se o usuario nao digitar centavos primeiro, apenas numeros inteiros, ate ai eu consegui fazer tranquilo, agora que fui tentar fazer os centavos, nao consigo fazer ele exibir os centavos, alguem pode me dar uma luz? Desculpe pelo código grande demais Program moedaporextenso ; function unidade(n:integer):string; begin case n of 0:unidade:=' '; 1:unidade:='Um'; 2:unidade:='Dois'; 3:unidade:='Tres'; 4:unidade:='Quatro'; 5:unidade:='Cinco'; 6:unidade:='Seis'; 7:unidade:='Sete'; 8:unidade:='Oito'; 9:unidade:='Nove'; 10:unidade:='Dez'; 11:unidade:='Onze'; 12:unidade:='Doze'; 13:unidade:='Treze'; 14:unidade:='Quatorze'; 15:unidade:='Quinze'; 16:unidade:='Dezesseis'; 17:unidade:='Dezessete'; 18:unidade:='Dezoito'; 19:unidade:='Dezenove'; end end; function dezena(n:integer):string; begin case n of 2:dezena:='Vinte'; 3:dezena:='Trinta'; 4:dezena:='Quarenta'; 5:dezena:='Cinquenta'; 6:dezena:='Sessenta'; 7:dezena:='Setenta'; 8:dezena:='Oitenta'; 9:dezena:='Noventa'; end end; function centena(n:integer):string; begin case n of 1:centena:='Cento'; 2:centena:='Duzentos'; 3:centena:='Trezentos'; 4:centena:='Quatrocentos'; 5:centena:='Quinhentos'; 6:centena:='Seiscentos'; 7:centena:='Setecentos'; 8:centena:='Oitocentos'; 9:centena:='Novecentos'; end end; var u, d, c, m, um, dm, cm, umi, dmi, cmi, mi, uc, dc, centsint,x: integer; result, din, casadosmil, casadomilhao, strimili, centavos, cenv: string; cents: real; ok: boolean; Begin centavos:=' centavos'; strimili:=' Milhões, '; din:= ' Reais'; ok:= false; repeat Write('Digite um valor em reais(R$): '); read(x); if(x>=0) then begin ok:=true; end; until ok=true; if x = 1000000000 then begin result:='Um Bilhão de'; end; cents := frac(x); centsint := int(cents); if (centsint > 0) and (centsint <= 99) then begin if centsint = 1 then begin centavos:= ' centavo'; end; if centsint < 20 then begin cenv:=unidade(centsint); end else if centsint < 100 then begin uc:=centsint mod 10; dc:=centsint div 10; if uc = 0 then begin cenv:=dezena(dc); end else begin cenv:=dezena(dc)+' e '+unidade(uc); end; end; end; if x = 1 then begin din:= ' Real'; end; if x < 20 then begin result:=unidade(x); end else if x < 100 then begin u:=x mod 10; d:=x div 10; if u = 0 then begin result:=dezena(d); end else begin result:=dezena(d)+' e '+unidade(u); end; end else if x < 1000 then begin c:=x div 100; d:=(x mod 100) div 10; u:=(x mod 100) mod 10; if d = 1 then begin case u of 0: result:=centena(c)+' e Dez'; 1: result:=centena(c)+' e Onze'; 2: result:=centena(c)+' e Doze'; 3: result:=centena(c)+' e Treze'; 4: result:=centena(c)+' e Quatorze'; 5: result:=centena(c)+' e Quinze'; 6: result:=centena(c)+' e Dezesseis'; 7: result:=centena(c)+' e Dezessete'; 8: result:=centena(c)+' e Dezoito'; 9: result:=centena(c)+' e Dezenove'; end; end else if ((u = 0) and (d = 0)) and (c = 1) then begin result:='Cem'; end else if u = 0 then begin result:=centena(c)+' e '+dezena(d); end else begin if d = 0 then begin result:=centena(c)+' e '+unidade(u); end else begin result:=centena(c)+' e '+dezena(d)+' e '+unidade(u); end; end; end //parte nova else if x < 1000000 then begin m:=x div 1000; c:=(x mod 1000) div 100; d:=((x mod 1000) mod 100) div 10; u:=((x mod 1000) mod 100) mod 10; if m < 20 then begin casadosmil:= unidade(m); end else if m < 100 then begin um:=m mod 10; dm:=m div 10; if um = 0 then begin casadosmil:=dezena(dm); end else begin casadosmil:=dezena(dm)+' e '+unidade(um); end; end else if m < 1000 then begin cm:=m div 100; dm:=(m mod 100) div 10; um:=(m mod 100) mod 10; if dm = 1 then begin case um of 0: casadosmil:=centena(cm)+' e Dez'; 1: casadosmil:=centena(cm)+' e Onze'; 2: casadosmil:=centena(cm)+' e Doze'; 3: casadosmil:=centena(cm)+' e Treze'; 4: casadosmil:=centena(cm)+' e Quatorze'; 5: casadosmil:=centena(cm)+' e Quinze'; 6: casadosmil:=centena(cm)+' e Dezesseis'; 7: casadosmil:=centena(cm)+' e Dezessete'; 8: casadosmil:=centena(cm)+' e Dezoito'; 9: casadosmil:=centena(cm)+' e Dezenove'; end; end else if ((um = 0) and (dm = 0)) and (cm = 1) then begin casadosmil:='Cem'; end else if (um = 0) and (dm = 0)then begin if (cm >= 2) and (cm <= 9) then begin casadosmil:=centena(cm); end; end else if um = 0 then begin casadosmil:=centena(cm)+' e '+dezena(dm); end else begin if dm = 0 then begin casadosmil:=centena(cm)+' e '+unidade(um); end else begin casadosmil:=centena(cm)+' e '+dezena(dm)+' e '+unidade(um); end; end; end; result:= casadosmil+' Mil, '+centena(c)+' e '+dezena(d)+' e '+unidade(u); if u = 0 then begin result:= casadosmil+' Mil, '+centena(c)+' e '+dezena(d); end else begin if d = 0 then begin result:=casadosmil+' Mil, '+centena(c)+' e '+unidade(u); end else begin if c = 0 then begin result:=casadosmil+' Mil, '+dezena(d)+' e '+unidade(u); end end; end; if d = 1 then begin case u of 0: result:=centena(c)+' e Dez'; 1: result:=centena(c)+' e Onze'; 2: result:=centena(c)+' e Doze'; 3: result:=centena(c)+' e Treze'; 4: result:=centena(c)+' e Quatorze'; 5: result:=centena(c)+' e Quinze'; 6: result:=centena(c)+' e Dezesseis'; 7: result:=centena(c)+' e Dezessete'; 8: result:=centena(c)+' e Dezoito'; 9: result:=centena(c)+' e Dezenove'; end; end else if ((d = 0) and (c = 0)) and (u = 0) then begin result:=casadosmil+' Mil'; end else if (u = 0) and (d = 0) then begin result:=casadosmil+' Mil, '+centena(c); end else if (u = 0) and (c = 0) then begin result:=casadosmil+' Mil, '+dezena(d); end else if (d = 0) and (c = 0) then begin result:=casadosmil+' Mil, '+unidade(u); end; end // show do milhão else if x < 1000000000 then begin mi:=x div 1000000; m:=(x mod 1000000) div 1000; c:=((x mod 1000000) mod 1000) div 100; d:=(((x mod 1000000) mod 1000) mod 100) div 10; u:=(((x mod 1000000) mod 1000) mod 100) mod 10; if mi = 1 then begin strimili:=' Milhão, '; end; if mi < 20 then begin casadomilhao:= unidade(mi); end else if mi < 100 then begin umi:=mi mod 10; dmi:=mi div 10; if umi = 0 then begin casadomilhao:=dezena(dmi); end else begin casadomilhao:=dezena(dmi)+' e '+unidade(umi); end; end else if mi < 1000 then begin cmi:=mi div 100; dmi:=(mi mod 100) div 10; umi:=(mi mod 100) mod 10; if dmi = 1 then begin case umi of 0: casadomilhao:=centena(cmi)+' e Dez'; 1: casadomilhao:=centena(cmi)+' e Onze'; 2: casadomilhao:=centena(cmi)+' e Doze'; 3: casadomilhao:=centena(cmi)+' e Treze'; 4: casadomilhao:=centena(cmi)+' e Quatorze'; 5: casadomilhao:=centena(cmi)+' e Quinze'; 6: casadomilhao:=centena(cmi)+' e Dezesseis'; 7: casadomilhao:=centena(cmi)+' e Dezessete'; 8: casadomilhao:=centena(cmi)+' e Dezoito'; 9: casadomilhao:=centena(cmi)+' e Dezenove'; end; end else if ((umi = 0) and (dmi = 0)) and (cmi = 1) then begin casadomilhao:='Cem'; end else if (umi = 0) and (dmi = 0)then begin if (cmi >= 2) and (cmi <= 9) then begin casadomilhao:=centena(cmi); end; end else if umi = 0 then begin casadomilhao:=centena(cmi)+' e '+dezena(dmi); end else begin if dmi = 0 then begin casadomilhao:=centena(cmi)+' e '+unidade(umi); end else begin casadomilhao:=centena(cmi)+' e '+dezena(dmi)+' e '+unidade(umi); end; end; end; if m < 20 then begin casadosmil:= unidade(m); end else if m < 100 then begin um:=m mod 10; dm:=m div 10; if um = 0 then begin casadosmil:=dezena(dm); end else begin casadosmil:=dezena(dm)+' e '+unidade(um); end; end else if m < 1000 then begin cm:=m div 100; dm:=(m mod 100) div 10; um:=(m mod 100) mod 10; if dm = 1 then begin case um of 0: casadosmil:=centena(cm)+' e Dez'; 1: casadosmil:=centena(cm)+' e Onze'; 2: casadosmil:=centena(cm)+' e Doze'; 3: casadosmil:=centena(cm)+' e Treze'; 4: casadosmil:=centena(cm)+' e Quatorze'; 5: casadosmil:=centena(cm)+' e Quinze'; 6: casadosmil:=centena(cm)+' e Dezesseis'; 7: casadosmil:=centena(cm)+' e Dezessete'; 8: casadosmil:=centena(cm)+' e Dezoito'; 9: casadosmil:=centena(cm)+' e Dezenove'; end; end else if ((um = 0) and (dm = 0)) and (cm = 1) then begin casadosmil:='Cem'; end else if (um = 0) and (dm = 0)then begin if (cm >= 2) and (cm <= 9) then begin casadosmil:=centena(cm); end; end else if um = 0 then begin casadosmil:=centena(cm)+' e '+dezena(dm); end else begin if dm = 0 then begin casadosmil:=centena(cm)+' e '+unidade(um); end else begin casadosmil:=centena(cm)+' e '+dezena(dm)+' e '+unidade(um); end; end; end; result:= casadomilhao+strimili+casadosmil+' Mil, '+centena(c)+' e '+dezena(d)+' e '+unidade(u); if u = 0 then begin result:= casadomilhao+strimili+casadosmil+' Mil, '+centena(c)+' e '+dezena(d); end else begin if d = 0 then begin result:= casadomilhao+strimili+casadosmil+' Mil, '+centena(c)+' e '+unidade(u); end else begin if c = 0 then begin result:= casadomilhao+strimili+casadosmil+' Mil, '+dezena(d)+' e '+unidade(u); end end; end; if d = 1 then begin case u of 0: result:=centena(c)+' e Dez'; 1: result:=centena(c)+' e Onze'; 2: result:=centena(c)+' e Doze'; 3: result:=centena(c)+' e Treze'; 4: result:=centena(c)+' e Quatorze'; 5: result:=centena(c)+' e Quinze'; 6: result:=centena(c)+' e Dezesseis'; 7: result:=centena(c)+' e Dezessete'; 8: result:=centena(c)+' e Dezoito'; 9: result:=centena(c)+' e Dezenove'; end; end else if ((d = 0) and (c = 0)) and (u = 0) then begin result:=casadomilhao+strimili+casadosmil+' Mil'; end else if (u = 0) and (d = 0) then begin result:=casadomilhao+strimili+casadosmil+' Mil, '+centena(c); end else if (u = 0) and (c = 0) then begin result:=casadomilhao+strimili+casadosmil+' Mil, '+dezena(d); end else if (d = 0) and (c = 0) then begin result:=casadomilhao+strimili+casadosmil+' Mil, '+unidade(u); end; end; if (centsint > 0) and (centsint <= 99) then begin write(result, din+' e '+cenv+centavos); end else begin write(result, din); end; End.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!