Ir ao conteúdo
  • Cadastre-se

Samuel Botelho

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

2
  1. Olá, sou iniciante na área e entrei recentemente pro curso de ADS. Como trabalho foi pedido que eu fizesse um programa completando o algoritmo que o professor mandou. Pois bem: o algoritmo consiste em ler numeros ineiros de 1 a 999 e mosrar por extenso( se eu digitar 344 ele deve escrever trezentos e quarenta e quatro).Eu fiz o algoritmo porém não está funcionando como deveria, ele lê a casa das centenas e dos decimais com precisão porém não lê a casa das unidades ( coloca dezena como se fosse unidade [ EX: escrevo 285, o alg. mostra duzentos e oitenta e cinquenta]). Outro erro presente é que ele não lê as casas de 11~19 (que tem aribuições diretamente para elas, o que acontece é que o algoritmo processa esses números embasado na centena caso eu escreva um deles[ EX: 612, ele escreverá seiscentos e dezesseis, porque 6 de certo modo se ligou a dezesseis. Outro EX: 418, será escrito quatrocentos e quatorze]) Abaixo o código. Desde já agradeço!!! Program validador1_999 ; Var Um,DE,CE,EX:array[1..9] of string[30]; Vet:array[1..3] of integer; Num,aux,a,b:integer; {PODE SER QUE PRECISE DE MAIS VARIÁVEIS} Tem_e:boolean; Begin {Monta os vetores com os extensos} Um[1]:= 'um'; Um[2]:='dois'; Um[3]:='tres'; Um[4]:='quatro'; Um[5]:='cinco'; Um[6]:='seis'; Um[7]:='sete'; Um[8]:='oito'; Um[9]:='nove'; EX[1]:='onze'; EX[2]:='doze'; EX[3]:='treze'; EX[4]:='quatorze'; EX[5]:='quinze'; EX[6]:='dezesseis'; EX[7]:='dezessete'; EX[8]:='dezoito'; EX[9]:='dezenove'; DE[1]:='dez'; DE[2]:='vinte'; DE[3]:='trinta'; DE[4]:='quarenta'; DE[5]:='cinquenta'; DE[6]:='sessenta'; DE[7]:='setenta'; DE[8]:='oitenta'; DE[9]:='noventa'; CE[1]:='cento'; CE[2]:='duzentos'; CE[3]:='trezentos'; CE[4]:='quatrocentos'; CE[5]:='quinhentos'; CE[6]:='seiscentos'; CE[7]:='setecentos'; CE[8]:='oitocentos'; CE[9]:='novecentos'; Repeat // valida Read (Num) Until (Num) <1000; While (Num) >0 do Begin Tem_e := false; Aux:=num; B:=4; Repeat //separa os dígitos do número lido B:=b-1; Vet[b]:=num mod 10; Num:=num div 10 Until (num = 0); {Verifica a exceção da centena (100)} If (aux=100) Then Write ( 'cem' ) Else Begin {Verifica se tem centena, obviamente <> 100} If (vet[1]<>0)then Begin Tem_e:=true; Write ( CE[vet[1]] ); {Verifica a exceção das dezenas 11 – 19} If (vet[2] = 1) and (vet[2] <> 0) then Begin If tem_e Then Write ( ' e ' ); Write ( EX[vet[1]] ) End Else Begin {Verifica se tem dezena, obviamente <> de 11,12,13,...,19} If vet[2] <> 0 then Begin If tem_e then Write ( ' e ' ); Write ( DE[vet[2]] ); If (vet[3] <> 0) then Begin If tem_e then Write ( ' e ' ); Write ( DE[vet[3]] ) End End End End End; Repeat Readln (num) Until num <1000 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...