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
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
A voir également:
- Programmation pascal
- Turbo pascal download - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Application de programmation - Guide
- Programmation - Guide
- Dev-pascal - Télécharger - Édition & Programmation
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
24 août 2009 à 14:31
tu as fais qoi?
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
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 :
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.
24 août 2009 à 14:37
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.