o enunciado do trabalho é este
Uma Associação Cultural e Desportiva (ACD) de âmbito regional pretende actualizar cada fim-de-semana a tabela classificativa da terceira divisão distrital de futebol, para a disponibilizar aos seus sócios.
Escreva um programa em linguagem Pascal que proporcione à ACD as seguintes funcionalidades:
a) Ler de um dado ficheiro binário a tabela classificativa correspondente à jornada anterior;
b) Listar no ecrã do computador a tabela lida;
c) Actualizar a tabela classificativa, mediante os resultados da nova jornada;
d) Actualizar o conteúdo do ficheiro binário, substituindo-o pela nova tabela;
e) Manter um ficheiro de texto actualizado com os resultados das sucessivas jornadas da época.
e o programa que já tenho é o seguinte
O programa já é executável. Ainda está incompleto (podem-me dar algumas luzes?sobre o que falta) Mas não consigo criar equipas....sai-me logo da janela....Já ouvi falar que o free pascal não é muito compativel com o Vista...será essa a razão? o programa está mal feito?
Uma Associação Cultural e Desportiva (ACD) de âmbito regional pretende actualizar cada fim-de-semana a tabela classificativa da terceira divisão distrital de futebol, para a disponibilizar aos seus sócios.
Escreva um programa em linguagem Pascal que proporcione à ACD as seguintes funcionalidades:
a) Ler de um dado ficheiro binário a tabela classificativa correspondente à jornada anterior;
b) Listar no ecrã do computador a tabela lida;
c) Actualizar a tabela classificativa, mediante os resultados da nova jornada;
d) Actualizar o conteúdo do ficheiro binário, substituindo-o pela nova tabela;
e) Manter um ficheiro de texto actualizado com os resultados das sucessivas jornadas da época.
e o programa que já tenho é o seguinte
Código:
program projecto2;
uses crt, dos; { - - Declaração dos Tipos necessarios - - }
const max_equip=3;
type nova_tabela=record
nome_equipa:string;
jornada,pontos,jogos,vitorias,empates,derrotas,golos_m,golos_s:integer;
end;
tabela=file of nova_tabela;
vector=array[1..max_equip] of nova_tabela;
function ficheiro_existe:boolean; { - - Funcao para verificar a existencia do ficheiro equipas.txt - -}
begin
if (FSearch('class.dat', '.')<>'') then
ficheiro_existe := TRUE
else
ficheiro_existe := FALSE;
end;
procedure nova_jornada(var v:vector;var num_equip:integer); { - - Inicia uma nova época - - }
var i:integer;
begin
repeat
clrscr;
writeln;
writeln('Numero Equipas (não exceder',max_equip,')?');
readln(num_equip);
until (num_equip>1) and (num_equip <=max_equip);
for i:=1 to num_equip do
with v[i] do
begin
writeln;
writeln('Introduza o nome para a equipa numero ',i,':');
writeln;
readln(nome_equipa);
jornada:=0;
pontos:=0;
jogos:=0;
vitorias:=0;
empates:=0;
derrotas:=0;
golos_m:=0;
golos_s:=0;
end;
writeln;
writeln('Equipas introduzidas com sucesso, prima ENTER para continuar.');
end;
procedure gravar_tabela( var fix:tabela; v:vector; n:integer);
var i:integer;
begin
for i:=1 to n do
write(fix,v[i]);
end;
procedure ler_tabela( var fix:tabela; var v:vector; var n:integer);
begin
n:=0;
while not eof(fix) do
begin
n:=n+1;
read(fix,v[n]);
end;
end;
procedure insere_jornada( var fix:tabela; var v:vector; var n:integer);
var i,gm,gs:integer;
c:char;
begin
for i:=1 to n do
with v[i] do
begin
clrscr;
jornada:=jornada+1;
write('Introduza o resultado da ',jornada,' jornada para a equipa ',nome_equipa,'(V/D/E):');
readln(c);
writeln;
case upcase(c) of
'V':begin
pontos:=pontos+3;
jogos:=jogos+1;
vitorias:=vitorias+1;
empates:=empates+0;
derrotas:=derrotas+0;
repeat
clrscr;
write('Insira o numero de golos MARCADOS pela equipa ',nome_equipa,'.');
readln(gm);
writeln;
write('Insira o numero de golos SOFRIDOS pela equipa ',nome_equipa,'.');
readln(gs);
writeln;
until (gm>gs);
golos_m:=golos_m+gm;
golos_s:=golos_s+gs;
end;
'E':begin
pontos:=pontos+1;
jogos:=jogos+1;
vitorias:=vitorias+0;
empates:=empates+1;
derrotas:=derrotas+0;
repeat
clrscr;
write('Insira o numero de golos MARCADOS pela equipa ',nome_equipa,': ');
readln(gm);
writeln;
write('Insira o numero de golos SOFRIDOS pela equipa ',nome_equipa,': ');
readln(gs);
writeln;
until (gm=gs);
golos_m:=golos_m+gm;
golos_s:=golos_s+gs;
end;
'D':begin
pontos:=pontos+0;
jogos:=jogos+1;
vitorias:=vitorias+0;
empates:=empates+0;
derrotas:=derrotas+1;
repeat
clrscr;
write('Insira o numero de golos MARCADOS pela equipa ',nome_equipa,'.');
readln(gm);
writeln;
write('Insira o numero de golos SOFRIDOS pela equipa ',nome_equipa,'.');
readln(gs);
writeln;
until (gm<gs);
golos_m:=golos_m+gm;
golos_s:=golos_s+gs;
end;
end;
end;
end;
procedure lista_tabela(var fix:tabela; var v:vector; var n:integer);
var i:integer;
begin
n:=0;
while not eof(fix) do
begin
n:=n+1;
read(fix,v[n]);
end;
writeln;
writeln('Jornada | Nome Equipa | Pontos | Jogos | Vitorias | Empates | Derrotas | Golos Marcados | Golos Sofridos');
writeln;
for i:=1 to n do
with v[i] do
writeln(jornada,'|',nome_equipa,'|',pontos,jogos,'|',vitorias,'|',empates,'|',derrotas,'|',golos_m,'|',golos_s);
end;
procedure apagar_fixeiros( var fix:tabela); { - - Procedimento para eliminar os ficheiros do programa - - }
var resp:char;
begin
clrscr;
writeln('Tem a certeza que pretende fazer reset ao programa?(S/N)');
writeln;
writeln('Ira apagar todos os seus fixeiro relativos a tabela classificativa.');
writeln;
readln(resp);
if (resp='S') then
begin
erase(fix);
clrscr;
writeln;
writeln('Dados removidos com sucesso.');
writeln;
writeln('Prima ENTER para Sair');
writeln;
readln;
end
end;
procedure apagar_registos(var fix:tabela); { - - Procedimento para apagar todos os registos do programa - - }
var resp:char;
begin
clrscr;
writeln('Tem a certeza que pretende apagar todos os registos?(S/N)');
writeln;
readln(resp);
if (resp='S') then
begin
rewrite(fix);
clrscr;
writeln;
writeln('Registos removidos com sucesso.');
writeln;
end;
end;
var vt:vector;
ne:integer;
op:char;
f:tabela;
begin { - - Programa Principal - - }
clrscr;
assign (f,'class.dat');
repeat
begin
clrscr;
writeln('':20);
writeln('':20);
writeln('Associacao Cultural e Desportiva':20);
writeln('':20);
writeln('Tabela Classificativa':20);
writeln('da':15);
writeln('':20);
writeln('Terceira divisao distrital':20);
writeln('de':15);
writeln('':20);
writeln('Futebol':15);
writeln('':20);
writeln('':20);
writeln('1 - Inicializar Tabela Classificativa':20);
writeln('':20);
writeln('2 - Inserir Resultados da jornada':20);
writeln('':20);
writeln('3 - Listar Tabela Classificativa':20);
writeln('':20);
writeln('4 - Eliminar Registos':20);
writeln('':20);
writeln('5 - Eliminar Fixeiros':20);
writeln('':20);
writeln('6 - Sair do Programa':20);
writeln('':20);
writeln('':20);
writeln;
writeln('Escolha uma opcao:' );
writeln;
readln(op);
case op of
'1':begin clrscr; nova_jornada(vt,ne); rewrite(f); gravar_tabela(f,vt,ne); close(f); end;{ - - Inicia liga - -}
'2':begin clrscr; reset(f); ler_tabela(f,vt,ne); insere_jornada(f,vt,ne); gravar_tabela(f,vt,ne); close(f); end;
'3':begin clrscr; reset(f); ler_tabela(f,vt,ne); lista_tabela(f,vt,ne); close(f); end; { - - Lista Tabela - - }
'4':begin clrscr; reset(f); apagar_registos(f); close(f); end;{ - - Limpa dados dos fixeiros - - }
'5':begin clrscr; reset(f); apagar_fixeiros(f); end;{ - - Eliminas fixeiros do disco - - }
'6':exit; { - - Termina o Programa - - }
end;
end;
until (op='1') or (op='2') or (op='3') or (op='4') or (op='5');
readln;
end.
O programa já é executável. Ainda está incompleto (podem-me dar algumas luzes?sobre o que falta) Mas não consigo criar equipas....sai-me logo da janela....Já ouvi falar que o free pascal não é muito compativel com o Vista...será essa a razão? o programa está mal feito?
Última edição pelo moderador: