Justiceira Postado Maio 30, 2009 Denunciar Share Postado Maio 30, 2009 (editado) program conta_telefonica;uses crt;varcalc: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;beginclrscr; 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 Maio 30, 2009 por Justiceira Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Luiz Rodrigo Postado Maio 31, 2009 Denunciar Share Postado Maio 31, 2009 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Justiceira Postado Maio 31, 2009 Autor Denunciar Share Postado Maio 31, 2009 (editado) valeu pela ajuda agora entendi mais.valeu mesmo!! Editado Maio 31, 2009 por Justiceira Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Justiceira
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 JusticeiraLink para o comentário
Compartilhar em outros sites
2 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.