Ir ao conteúdo
  • Cadastre-se

tiar a media de valores num texto em pascal.


mpecinalli

Posts recomendados

Olá amigo.

Tenho um texto (dados.txt) e neste texto tem n linhas

cada linha com dois valores reais contendo a temperatura min e maxima de cada dia.

como fço em pascal, para ler estas linhas e tirar a media das temperaturas minimas e media das temperaturas maxima. exemplo:

20.00 32.00

22.50 30.00

o que desejo no caso, e fazer o programa ler este arquivo texto contendo estas 2 linha e me mostrar na tela a media das minimas(20.00 e 22.00)

e media das maximas(32.00 e 30.00)

fiz um teste diferente para tirar a media da primeira linha..deu certo, só nao consigo, e fazer ele pular automaticamente para a proxima linha e tirar a media da proxima automaticamente..

aida mais sendo a media das minimas e media das maximas... se alguem me der um help agradeço...segue o codigo que fiz.

program medias(input {teclado},output{video},dados{e});
uses crt;

var
dados:text;
tempMin,TempMax:real;
media:real;
nomearquivo:string;
j,i:integer;

Begin


writeln(output, ' POr favor diga o nome de arquivo de dados');
read( input, nomearquivo);


assign(dados,nomearquivo);
reset(dados);

for j:= 1 to 3 do;
begin
readln(dados,tempmin,tempmax);
media:=(tempmin+tempmax)/2;
readln;
end;
for i:= 1 to 3 do
begin
writeln(media:4:2);

end;
readkey;
end.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá amigo.

Tenho um texto (dados.txt) e neste texto tem n linhas

cada linha com dois valores reais contendo a temperatura min e maxima de cada dia.

como fço em pascal, para ler estas linhas e tirar a media das temperaturas minimas e media das temperaturas maxima. exemplo:

20.00 32.00

22.50 30.00

o que desejo no caso, e fazer o programa ler este arquivo texto contendo estas 2 linha e me mostrar na tela a media das minimas(20.00 e 22.00)

e media das maximas(32.00 e 30.00)

fiz um teste diferente para tirar a media da primeira linha..deu certo, só nao consigo, e fazer ele pular automaticamente para a proxima linha e tirar a media da proxima automaticamente..

aida mais sendo a media das minimas e media das maximas... se alguem me der um help agradeço...segue o codigo que fiz.

program medias(input {teclado},output{video},dados{e});

uses crt;

var

dados:text;

tempMin,TempMax:real;

media:real;

nomearquivo:string;

j,i:integer;

Begin

writeln(output, ' POr favor diga o nome de arquivo de dados');

read( input, nomearquivo);

assign(dados,nomearquivo);

reset(dados);

for j:= 1 to 3 do;

begin

readln(dados,tempmin,tempmax);

media:=(tempmin+tempmax)/2;

readln;

end;

for i:= 1 to 3 do

begin

writeln(media:4:2);

end;

readkey;

end.

Olá,

mpecinalli, você está cometendo alguns erros de sintaxe e de lógica.

1) for não leva ";"

for j:= 1 to 3 do[COLOR="Red"];[/COLOR]
begin
readln(dados,tempmin,tempmax);
media:=(tempmin+tempmax)/2;
readln;
end;

2) Media só armazenará o último valor

Você declarou media como sendo um simples real, ou seja, ela é uma variável comum que armazena um único valor, que no caso é real. (toda variável é assim, só armazena um único valor).

Daí, a cada loop do for essa variável vai ter o último valor associado a ele:

for j:= 1 to 3 do;
begin
readln(dados,tempmin,tempmax);
[COLOR="Red"]media:=(tempmin+tempmax)/2;[/COLOR]
readln;
end;

Ou sejam vai ter somente a média da linha 3 (que por sinal não existe). Daí os três resultados vão ser iguais.

exemplo:

20.00 32.00

22.50 30.00

***

RESUMINDO

- Remova o ";" do for

- Resolva o problema da armazenagem das médias. (por ex.: imprimindo diretamente a cada loop ou armazenando as resposta num array)

***

Exemplo de como poderia ficar (inserir "coisar novas", mas tentei comentar o máximo possível)


uses
crt; {carrega comandos extras como ReadKey, ClrScr, TextColor}
var
dados :text; {variável que se associara ao arquivo}
tempMin, {temperaturas mínimas dos dias}
tempMax :real; {temperaturas máximas dos dias}
media :real; {médias das temperaturas dias}
nomeArquivo :string; {nome do arquivo a ser lido (caminho completo
ou relativo}
codeIOR :integer; {status de resultados das operações de I/O}
BEGIN
{CONFIGURAÇOES DE TELA}
TextColor(15); {cor do texto}
TextBackGround(0); {cor do fundo}
ClrScr; {limpa a tela}

{LEITURA DA ORIGEM DO ARQUIVO}
writeln(output, ' Por favor diga o nome de arquivo de dados');
readln(input, nomearquivo); {ler o caminho do arquivo}

{TENTATIVA DE ABERTURA DO ARQUIVO}
{$I-} {desativa o fechamento caso ocorra erros de I/O (entrada e saída)}
assign(dados,nomeArquivo); {associa o caminho (arquivo) a variável}
reset(dados); {abre o arquivo no inicio}
codeIOR:=IOResult; {retorna o status da ultima operação de I/O}
{$I+} {reativa o fechamento caso ocorra erros de I/O (entrada e saída)}
if codeIOR<>0 then
begin
TextColor(14); {amarelo}
writeln('ERRO ',codeIOR,' Não foi possível abrir ou encontrar o arquivo :'
,nomeArquivo);
TextColor(15); {branco novamente}
end
else {caso não ocorra erros (quando code = 0)}
begin
writeln('TEMP. MÍNIMA TEMP.MÁXIMA MEDIA');
while (not EOF(dados)) do {enquanto não for o fim do arquivo}
begin
{LEITURA DA LINHA ATUAL}
readln(dados,tempmin,tempmax); {ler duas colunas e desce a linha}
{CALCULO DA MÉDIA DA LINHA ATUAL}
media:=(tempMin+tempMax)/2; {calcula a média}
{EXIBE OS RESULTADOS DA LINHA ATUAL}
write(tempMin:10:2);
write(tempMax:18:2);
TextColor(10); {verde}
writeln(media:18:2);
TextColor(15); {branco novamente}
end;
end;
ReadKey; {dah um pause antes de fechar}
END.
program medias(input {teclado},output{video},dados{e});

Qualquer coisa é só postar

Abraços

Link para o comentário
Compartilhar em outros sites

Com um ficheiro de dados torna-se mais fácil fazer isso. Não é possivel utilizar um ficheiro de dados ou tem mesmo que ser com um ficheiro de texto?

Resolvido Amigos....

Usei a logica.. " while not eof(arquivo) do { enquanto nao for o fim do arquivo faça}

readln(arquivo,var1, var2);

ai peguei as variaveis e comparei elas....obrigado pelos helps!:D

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!