Programmation pascal

Fermé
toutowa18 Messages postés 5 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 septembre 2009 - 24 août 2009 à 14:26
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 24 août 2009 à 16:45
Bonjour, jai un problemme a résoudre ce problemme
Exercice N° 1 :

Soit le fichier Fcompte. Un enregistrement logique de ce fichier se compose des rubriques suivantes :
• Numéro : numéro du compte
• Titulaire : le titulaire de compte
• Solde : le solde de ce compte
1- Ecrire une analyse puis un algorithme d’un sous programme qui permet de créer le fichier Fcompte
2- Ecrire une analyse puis un algorithme d’un sous programme qui permet d’afficher l’état (débiteur ou créditeur) d’un compte donné. Le numéro de compte est fourni par l’utilisateur. Dans le cas où ce dernier introduit un numéro qui n’existe pas prévoir un message d’erreur
3- Donner la traduction pascal de ce programme
A voir également:

2 réponses

tchsimons Messages postés 191 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 24 novembre 2012 14
24 août 2009 à 14:31
tu as fais qoi?
0
toutowa18 Messages postés 5 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 septembre 2009
24 août 2009 à 14:37
jai un essai mai ca ne marche pa
program ex1_serie1;
uses wincrt;
type
eee=record
nom:string;
nu_compte:integer;
montant:real;
end ;
tab= array [1..50] of eee;

var
e:eee;
t:tab;
n,ind,i:integer;
montant:real;
procedure saisie( var n:integer);
begin
repeat
writeln('donner le numero de persone');
readln(n);
until (n>0);
end;
procedure lire(e:eee);
var
nom: string;
nu_compte: integer;
montant:real;
begin
writeln('donnner le nom'); read (nom);
writeln('donnner nu_compte '); read (nu_compte);
writeln('donnner montant'); read (montant);
end;

procedure remplir (var t:tab ; n:integer; e:eee);
var
i:integer;
nom: string;
nu_compte: integer;
montant:real;
begin
for i := 1 to n do
begin
with t[i] do
writeln('donnner le nom'); read (nom);
writeln('donnner nu_compte '); read (nu_compte);
writeln('donnner montant'); read (montant);

end;

end;
procedure affiche1 ( t:tab;n:integer);
var i: integer;nom:string; nu_compte:integer; montant:real;
begin
for i:=1 to n do
begin
with t[i] do
writeln('donnner le nom',nom);
writeln('donnner nu_compte ',nu_compte);
writeln('donnner montant',montant);
end;
end;

begin
saisie( n);

remplir(t,n,e);

affiche1(t,n);


end.
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
24 août 2009 à 16:45
Ton principal problème c'est l'utilisation des variables.

Il ne faut JAMAIS utiliser deux fois le même nom de variable pour deux éléments différents.
De plus évite un maximum l'utilisation de variable globale, le plus souvent ça apporte confusion et erreurs dans le code.

Premier exemple :
Tu fais var n:integer au début du code (donc en globale)
Puis tu fais var n:integer en paramètre de saisie (donc en locale)
Je ne sais pas ce que fait l'ordinateur, mais il est impossible de savoir lequel des deux sera modifié puisque la variable porte le même nom

Deuxième exemple :
Tu as nu_compte dans un champ de eee, et tu as nu_compte en locale dans affiche1
Quand tu fais writeln(nu_compte) il est impossible de prédire lequel des deux sera afficher...

Remarques annexes :
- uses wincrt ne sert à rien
- tu dois finir ton programme par un readln sinon tu n'auras pas le temps de voir ta fenêtre s'afficher à l'écran, par exemple voici ce que je mets par défaut à la fin de tous mes programmes :
writeln; write('Fin du programme. Appuyer sur Entree'); readln;
end.
Quand tu auras lu (et compris j'espère) mes commentaires, modifie ton code, et en cas de problème persistant, poste le code modifié mais en utilisant les balise de code (à droite du bouton souligné) pour conserver l'indentation de ton code.
0