Olá Angelo,

Pascal, já não sei aos Anos que não utilizo isso...velhos tempos.

Se percebi o enunciado do problema o que tem que fazer é pedir a 
indicação do tipo de apartamento e não o valor porque esse é conhecido à 
partida.

Veja se este código lhe resolve o problema.

program hospedaria;
uses crt;
var
   nome: string;
   diaria, subtotal, n_diarias, consumo: longint;
   total, tx_servico: real;
   DApt: array[1..4] of integer;
   tipo_apt, key: char;

begin
   Dapt[1]:= 15000; { Diária apartamento Tipo A}
   Dapt[2]:= 10000; { Diária apartamento Tipo B}
   Dapt[3]:= 7500; { Diária apartamento Tipo C}
   Dapt[4]:= 5000; { Diária apartamento Tipo D}

   clrscr;
   write('Indique o nome do Hospede: '); readln(nome);
   writeln; writeln;
   writeln('* Tipos de Apartamentos *');
   writeln(' A - T3; di ria: ', Dapt[1]);
   writeln(' B - T2; di ria: ', Dapt[2]);
   writeln(' C - T1; di ria: ', Dapt[3]);
   writeln(' D - T0; di ria: ', Dapt[4]); writeln;

   repeat
     write('Indique o Tipo de Apartamento: '); readln(key);
     key:=upcase(key);
   until (key='A') or (key='B') or (key='C') or (Key='D');

   tipo_apt:= key;
   { usamos o codigo ASCII da letra para calcular o index para o array
     com o custo da di ria relativa ao tipo de apartamento
   }
   diaria:=Dapt[ord(key) - 64];

   write('Indique número de dias: '); readln(n_diarias);
   write('Indique o consumo:'); readln(consumo);

   writeln; writeln('*** RECIBO ***);writeln;
   writeln('Hospede: ', Nome);
   writeln('Tipo de Apartamento: ',tipo_apt);
   subtotal:= diaria * n_diarias;
   writeln('Custo da di ria: ', diaria, ' x ',n_diarias, ' dias = 
',subtotal);
   writeln('Consumo efectuado: ', consumo);
   subtotal:= subtotal + consumo;
   writeln('> SUBTOTAL: = ', subtotal);
   tx_servico:= subtotal /100 * 10;
   writeln('Valor da taxa de servi‡o e: ', tx_servico:2:2);
   total:=subtotal + tx_servico;
   writeln; writeln('>>> TOTAL A PAGAR: ',total:2:2);
   readkey;
end.

___
Rui Paz
Rui Paz




COMPUTADOR(Entreajuda) wrote:
> 
> 
> 
> 
> Caro Nuno,
> 
> como o programa pede para exibir o nome do hospede, o número de diarias 
> utilizadas, o valor do consumo interno e finalmente ler o
> valor da taxa de serviço, sabendo que; 
> o valor do apartamento A é 15000
>                                 B é 10000
>                                 C é 7500
>                                 D é 5000
> eu fiz da seguinte maneira: 
>  
>  
> program hospedaria;
> uses crt;
> var 
> nome: string;
> var 
> n_diarias: integer;
> var
> tipo_apt, apt_a, apt_b, apt_c, apt_d, consumo, subtotal, tx_servico: real;
> begin
> clrscr;
> write('digite o valor apartamento A: ' ); readln(apt_a);
> write('digite o valor do apartamento B: '); readln(apt_b);
> write('digite o valor do apartamento C: '); readln(apt_d);
>  
> subtotal:= 15000 * n_diarias + consumo;
> tx_servico:= subtotal /100 * 10;
> writeln(' o valor da taxa de serviço e: ', tx_servico:2:2);
> readkey;
> end.
>  
> até aquí o programa funciona...Mas como sei que o valor do tipo de 
> apartamente sao valores fixos, então pensei em atribuir valores
> as variaveis e daí criar 4 condições que consistem em exibir só o resultado 
> que a atenda uma determinada condição isto de acordo com
> o tipo de apartamento que o hóspede escolher. e fiz o isso que nao funciona.
>  
> const
> a:= 15000;
> b:= 1000;
> c:= 7500;
> d:= 5000;
> begin
> if tipo_apt = apt_a then
> subtotal:= apt_a * n_diarias + consumo
> else
> if tipo_apt = apt_b then
> subtotal:= apt_b * n_diarias + consumo
> else
> if tipo_apt = apt_c then
> subtotal:= apt_c * n_diarias + consumo
> else
> if tipo_apt = apt_d then
> subtotal:= apt_d * n_diarias + consumo;
> end.
>  
> apartir daquí tudo dá zebra porq tambem nao consigo encotra a maneira de 
> exibir e calcular e nem e tambem as variaveis que atribui
> valores nao sao reconhecidos.... se alquém mais pude ajudar eu acredeço 
> antecipadamente,


--~--~---------~--~----~------------~-------~--~----~
-----------------------------------------------------------------------
                  Revista  COMPUTADOR
              http://www.clubeinformatica.com
-----------------------------------------------------------------------

Para enviar mensagens para este grupo, envie um email para
[email protected]
Para anular a inscrição neste grupo, envie um email para
[email protected]
Para mais opções, visite este grupo em
http://groups.google.pt/group/ajuda-informatica/
-~----------~----~----~----~------~----~------~--~---

Responder a