Jump to content
Bruno Santos

Fazer médias com ficheiros definidos pelo utilizador

Recommended Posts

Bruno Santos

Ola Muito Boa Noite eu tenho que fazer um projeto em pascal e no projeto diz que devo calcular e apresentar a média das idades no conjunto das pessoas no mesmo ficheiro e eu não sei como fazer,Podem me ajudar?Agradecia Muito!Obrigada

O código ta Assim:

program registo_de_pessoas;
uses crt;
type registo=record
     nome:String;
     idade:integer;
end;
type data=record
     dia,mes,ano:integer;
end;
var fich1:file of registo;
    pessoa:registo;
    data_nas:data;
    n,c:Integer;
function existeFicheiro:Boolean;
Begin
assign(fich1,'RegistoPessoas.dat');
{$I-}
reset(fich1);Close(fich1);
{$I+}
existeFicheiro:=(IoResult=0);
end;
procedure registo_de_pessoas;
Begin
clrscr;
writeln('Registar Pessoas');
if existeFicheiro then
reset(fich1)
else
rewrite(fich1);
write('Quantos Registo vai Introduzir?');
readln(n);
for c:=1 to n do
Begin
write('Nome:');
readln(pessoa.nome);
write('Idade');
readln(pessoa.idade);
writeln('Data de Nascimento');
write('Dia:');
readln(data_nas.dia);
write('Mes:');
readln(data_nas.mes);
write('Ano:');
readln(data_nas.ano);
seek(fich1,Filesize(fich1));
write(fich1,pessoa);
end;
close(fich1);
end;
Begin
Writeln('Bem Vindo ao Registos de Pessoas');
registo_de_pessoas;
readln;
end.


 

Edited by nunopicado
Syntax Highlight

Share this post


Link to post
Share on other sites
nunopicado

Antes de mais, deixa-me só dizer-te que deves ter mais cuidado na indentação. O código está todo ao mesmo nível, o que o torna de difícil leitura. 
Mesmo para ti, se começares a indentar correctamente, verás que te facilita bastante.

Quanto à média, podes calcular somando todas as idades e dividindo pelo total de pessoas.

Cria uma variável do tipo Real, inicializa-a a 0, e a cada pessoa que dás entrada, soma o valor da idade a essa variável.
No fim, fazes a divisão pelo numero de pessoas, e apresentas o resultado.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Bruno Santos

Muito obrigada pelas dicas mas como acedo as idades no ficheiro para poder fazer a media?

 

Edited by pwseo
Citação desnecessária.

Share this post


Link to post
Share on other sites
nunopicado

Tens aí duas hipoteses:
Ou vais somando logo à medida que o utilizador insere a data, e nesse caso nem precisas ir ao ficheiro, ou lês o ficheiro no fim.

Para isso tens de correr todos os registos gravados (com um ciclo FOR entre 0 e FileSize(fich1) - 1, usando o seek(fich1, i) para posicionar o registo, e lendo o registo com read(fich1, pessoa).
A cada registo lido, vais somando o valor da idade à variável, e no fim divides.

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Bruno Santos
Em 2017-6-17 às 00:01, nunopicado disse:

Tens aí duas hipoteses:
Ou vais somando logo à medida que o utilizador insere a data, e nesse caso nem precisas ir ao ficheiro, ou lês o ficheiro no fim.

Para isso tens de correr todos os registos gravados (com um ciclo FOR entre 0 e FileSize(fich1) - 1, usando o seek(fich1, i) para posicionar o registo, e lendo o registo com read(fich1, pessoa).
A cada registo lido, vais somando o valor da idade à variável, e no fim divides.

Muito Obrigado Nuno aserio ajudas te me bastante obrigadam Nuno.

Depois eu Digo te a nota que tirem no projeto... ;) 

Se for preciso mais alguma coisa eu pregunto. Mais uma vez obrigada 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.