exercice 13 page 71
Page 1 sur 1
exercice 13 page 71
Salam.
Voici quelques notions de correction:
analyse:
résultat = proc menu
========================
DEF PROC menu ()
résultat = choix
répéter
choix=donnée
jusqu'à choix dans [1..3]
selon choix faire
1: PROC lecture
2: PROC ecriture
fin selon
Ecrire (" 1 : Lecture ")
Ecrire (" 2 : Ecriture ")
Ecrire (" 3 : Quitter ")
===========================
DEF PROC lecture ()
résultat =
Ecrire (" 1 : Eleve ")
Ecrire (" 2 : Classe ")
Ecrire (" 3 : Quitter ")
repeter
choix=donnée
jusqu'à choix dans [1..3]
selon choix faire
1: PROC lect_e
2: PROC lect_c
finselon
=======================
DEF PROC lect_e
résultat = ecrire (e.nom,e.prenom,e.moy)
e= lire(f,e)
pointer(f,n)
repeter
n=donnée("donner le numero de l'eleve")
jusqu'à n dans [0..cl-1]
cl ← taille_fichier(f)
f=associer(f,nomf)
nomf=former(nomf1)
nomf1=donnée("donner le nom du fichier")
============================
DEF PROC lect_c
résultat =
[ouvrir(f)]tantque non fin_fichier(f) faire
lire (f,e)
ecrire (e.nom,e.prenom,e.moy)
fin tantque
fermer(f)
f=associer(f,nomf)
nomf=former(nomf1)
nomf1=donnée("donner le nom du fichier")
===============================
Voici quelques notions de correction:
analyse:
résultat = proc menu
========================
DEF PROC menu ()
résultat = choix
répéter
choix=donnée
jusqu'à choix dans [1..3]
selon choix faire
1: PROC lecture
2: PROC ecriture
fin selon
Ecrire (" 1 : Lecture ")
Ecrire (" 2 : Ecriture ")
Ecrire (" 3 : Quitter ")
===========================
DEF PROC lecture ()
résultat =
Ecrire (" 1 : Eleve ")
Ecrire (" 2 : Classe ")
Ecrire (" 3 : Quitter ")
repeter
choix=donnée
jusqu'à choix dans [1..3]
selon choix faire
1: PROC lect_e
2: PROC lect_c
finselon
=======================
DEF PROC lect_e
résultat = ecrire (e.nom,e.prenom,e.moy)
e= lire(f,e)
pointer(f,n)
repeter
n=donnée("donner le numero de l'eleve")
jusqu'à n dans [0..cl-1]
cl ← taille_fichier(f)
f=associer(f,nomf)
nomf=former(nomf1)
nomf1=donnée("donner le nom du fichier")
============================
DEF PROC lect_c
résultat =
[ouvrir(f)]tantque non fin_fichier(f) faire
lire (f,e)
ecrire (e.nom,e.prenom,e.moy)
fin tantque
fermer(f)
f=associer(f,nomf)
nomf=former(nomf1)
nomf1=donnée("donner le nom du fichier")
===============================
correction en pascal
Voici un programme exétucable.
Pour le code source, il sera publié après l'avoir corrigé en classe.
Merci bien.
Pour le code source, il sera publié après l'avoir corrigé en classe.
Merci bien.
- Fichiers joints
Programme Pascal
program classe_eleves;
uses wincrt;
type
eleve = record
nom:string[20];
prenom:string[20];
moy:real;
end;
Fichier=file of eleve;
procedure saisirClasse(var classe:string);
begin
write('Classe : ');readln(classe);
classe:=classe+'.FCH';
end;
procedure RemplirClasse;
var
E:eleve;
i,n:integer;
Cl:string;
c:char;
F:Fichier;
begin
saisirClasse(Cl);
assign(F,'c:\classes\'+Cl);
rewrite(F);
i:=1;
repeat
with E do
begin
writeln(' # ELEVE ',i,' :');
write(' Nom : ');readln(nom);
write(' Prénom : ');readln(prenom);
write(' Moyenne : ');readln(moy);
writeln;
end;
i:=1+i;
write(F,E);
repeat
write('Ajouter eleve O/N');readln(c);
until c in['o','O','N','n'];
until upcase(c)='N';
end;
procedure LectureClasse(var F:Fichier);
var
E:eleve;
begin
while not(eof(F)) do
begin
read(F,E);
with E do
begin
writeln('Nom : ':20,'Prénom : ':20,'Moyenne :':20);
writeln(nom:20,prenom:20,moy:20:2);
end;
end;
end;
procedure LectureEleve(var F:Fichier);
var
n:integer;
E:eleve;
begin
write('Eleve numero : ');readln(n);
seek(F,n-1);
read(F,E);
with E do
begin
writeln('Nom : ':20,'Prénom : ':20,'Moyenne :':20);
writeln(nom:20,prenom:20,moy:20:2);
writeln;
end;
end;
procedure lectureFichiers(var F:Fichier);
var
Cl,ch:string;
begin
saisirClasse(Cl);
assign(F,'c:\classes\'+Cl);
reset(F);
end;
procedure Menu2;
var
k:integer;
F:Fichier;
begin
clrscr;
writeln(' 1 - Eleve');
writeln(' 2 - Classe');
writeln(' 3 - Quiter');
repeat
write('Votre Choix : ');readln(k);
until(k in [1..3]);
case k of
1 : BEGIN lectureFichiers(F);
LectureEleve(F);end;
2 : begin lectureFichiers(F);
LectureClasse(F);end;
end;
end;
procedure continue;
begin
writeln;writeln('*** Appyuez une touche pour continuer *** ');readkey;
end;
procedure Menu1;
var
k:integer;
begin
clrscr;
writeln(' 1 - Lecture');
Writeln(' 2 - Ecriture');
writeln(' 3 - Quiter');
repeat
write('Votre Choix : ');readln(k);
until(k in [1..3]);
case k of
1 : begin menu2;continue;
menu1;end;
2 : begin RemplirClasse; continue;
menu1;end;
end;
end;
BEGIN
Menu1;
END.
uses wincrt;
type
eleve = record
nom:string[20];
prenom:string[20];
moy:real;
end;
Fichier=file of eleve;
procedure saisirClasse(var classe:string);
begin
write('Classe : ');readln(classe);
classe:=classe+'.FCH';
end;
procedure RemplirClasse;
var
E:eleve;
i,n:integer;
Cl:string;
c:char;
F:Fichier;
begin
saisirClasse(Cl);
assign(F,'c:\classes\'+Cl);
rewrite(F);
i:=1;
repeat
with E do
begin
writeln(' # ELEVE ',i,' :');
write(' Nom : ');readln(nom);
write(' Prénom : ');readln(prenom);
write(' Moyenne : ');readln(moy);
writeln;
end;
i:=1+i;
write(F,E);
repeat
write('Ajouter eleve O/N');readln(c);
until c in['o','O','N','n'];
until upcase(c)='N';
end;
procedure LectureClasse(var F:Fichier);
var
E:eleve;
begin
while not(eof(F)) do
begin
read(F,E);
with E do
begin
writeln('Nom : ':20,'Prénom : ':20,'Moyenne :':20);
writeln(nom:20,prenom:20,moy:20:2);
end;
end;
end;
procedure LectureEleve(var F:Fichier);
var
n:integer;
E:eleve;
begin
write('Eleve numero : ');readln(n);
seek(F,n-1);
read(F,E);
with E do
begin
writeln('Nom : ':20,'Prénom : ':20,'Moyenne :':20);
writeln(nom:20,prenom:20,moy:20:2);
writeln;
end;
end;
procedure lectureFichiers(var F:Fichier);
var
Cl,ch:string;
begin
saisirClasse(Cl);
assign(F,'c:\classes\'+Cl);
reset(F);
end;
procedure Menu2;
var
k:integer;
F:Fichier;
begin
clrscr;
writeln(' 1 - Eleve');
writeln(' 2 - Classe');
writeln(' 3 - Quiter');
repeat
write('Votre Choix : ');readln(k);
until(k in [1..3]);
case k of
1 : BEGIN lectureFichiers(F);
LectureEleve(F);end;
2 : begin lectureFichiers(F);
LectureClasse(F);end;
end;
end;
procedure continue;
begin
writeln;writeln('*** Appyuez une touche pour continuer *** ');readkey;
end;
procedure Menu1;
var
k:integer;
begin
clrscr;
writeln(' 1 - Lecture');
Writeln(' 2 - Ecriture');
writeln(' 3 - Quiter');
repeat
write('Votre Choix : ');readln(k);
until(k in [1..3]);
case k of
1 : begin menu2;continue;
menu1;end;
2 : begin RemplirClasse; continue;
menu1;end;
end;
end;
BEGIN
Menu1;
END.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|