Ir para conteúdo
Fórum Script Brasil
  • 0

PROGRAMA EM PASCAL


Justiceira

Pergunta

program conta_telefonica;

uses crt;

var

calc:real;

tel:string;

i:integer;

pulso:array[1..2]of real;

inter:array[1..2]of real;

type

t_vettel=array[1..2]of string[12];

t_vetpulso=array[1..2]of real;

t_vetinter=array[1..2]of real;

procedure cont(var tel:t_vettel;pulso:t_vetpulso;inter:t_vetinter);

var i:integer;

begin

for i:=1 to 2 do

begin

writeln('Digite seu numero de telefone:');

readln(tel);

writeln('Digite quantos pulsos gastos para chamadas locais:');

readln(pulso);

writeln('Digite o valor de todas as chamadas interurbanas:');

readln(inter);

end;

end;

begin

clrscr;

Cont(AQUI ESTA O PROBLEMA EU ACHO);

for i:=1 to 2 do

begin

writeln('Telefone:',tel);

calc:=(pulso*0.127)+inter;

writeln('O Calculo e: R$',calc:0:2);

end;

readln;

end.

O problema é que não sei como chamar essa procedure,é que estou começando e não entendi essa parte ou será q é erro de logica?

Me ajudem

Editado por Justiceira
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Primeiramente, as variáveis tel, pulso e inter deveriam ser declarados como seu respectivo tipo,

var 
    tel: t_vettel;
    pulso: t_vetpulso;
    inter: t_vetinter;
pois o compilador poderia acusar que os argumentos são incompatíveis (type mismatch), pois para o compilador, array [1..2] of real e t_velpulso são tecnicamente diferentes, embora sejam a mesma coisa. Todos os argumentos da procedure cont deveriam ser passados por referência, como abaixo:
procedure cont (var tel: t_vettel; var pulso: t_vetpulso; var inter: t_vetinter);
Porque todos os vetores passados são modificados dentro da procedure. Na hora de chamar, basta usar os nomes das variáveis:
cont (tel, pulso, inter)
o programa deveria ficar assim:
program conta_telefonica;
uses crt;

type
t_vettel=array[1..2]of string[12];
t_vetpulso=array[1..2]of real;
t_vetinter=array[1..2]of real;

procedure cont(var tel: t_vettel; var pulso: t_vetpulso; var inter: t_vetinter);
var i:integer;
begin
for i:=1 to 2 do
begin
writeln('Digite seu numero de telefone:');
readln(tel[i]);
writeln('Digite quantos pulsos gastos para chamadas locais:');
readln(pulso[i]);
writeln('Digite o valor de todas as chamadas interurbanas:');
readln(inter[i]);
end;
end;

var calc: real;
    i: integer;
    tel: t_vettel;
    pulso: t_vetpulso;
    inter: t_vetinter;
    
begin
clrscr;
Cont(tel, pulso, inter);
for i:=1 to 2 do
begin
writeln('Telefone:',tel[i]);
calc:=(pulso[i]*0.127)+inter[i];
writeln('O Calculo e: R$',calc:0:2);
end;
readln;
end.

Só uma dica: seria bom criar uma constante max que tivesse o valor de 2, pois facilitaria a manutenção do código!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...