On m'affiche erreur au niveau d'1e instructio
laylana
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai fais une programme il s'agit d'un un tableau T de n réels positifs, avec n est un entier entre 5 et 20. Faire l'analyse et déduire l'algorithme d'un programme permettant de calculer l'écart entre le plus grand réel et le plus petit réel se trouvant dans T.
Exemple : n= 6 et T contient 15 - 28.3 - 60.45 - 10 - 2.15 - 58
L'écart = 60.45 - 2.15 = 58.30
Voilà mon travail:
Program Ecart;
Uses WinCrt;
Type TAB = Array [5..20] of integer;
Var i,j,n,V_max,V_min:integer; T:TAB;
Procedure lire (Var x:integer);
Begin
Repeat
Writeln ('Donnez la taille du tableau'); Readln (x);
Until (x in [5..20]);
End;
Procedure remplir (Var V:TAB;y:integer);
Var i:integer;
Begin
For i:= 1 To y Do
Begin
Writeln ('Donnez la valeur de l"éléments N° ',i);
Readln (V[i]);
End;
Function max (Var V: TAB; x,y: integer):integer;
Var i, Vmax :integer;
Begin
Vmax := V[x];
For i:= x + 1 To y Do
If Vmax < V[i] Then Vmax := V[i];
max := Vmax;
End;
Function min (Var V:TAB;x,y:integer):integer;
Var i,Vmin:integer;
Begin
Vmin := V[x];
For i:= x + 1 To y Do
If Vmin > V[i] Then Vmin := V[i];
min := Vmin;
End;
Begin
lire (n);
remplir (T,n);
V_max := max (T,i,j);
V_min := min (T,i,j);
Writeln ('La valeur maximal dans cet intervalle = ',V_max);
Writeln ('La valeur minimal dans cet intervalle = ',V_min);
End;
Var R: integer;
Begin
R:= V_max - V_min;
Write ('L''écart = ', R );
Readln (R);
End.
Je sais pas pk on m'affiche erreur au niveau de "Function max (Var V: TAB; x,y: integer):integer;" pouvez vous m'aider? merci
J'ai fais une programme il s'agit d'un un tableau T de n réels positifs, avec n est un entier entre 5 et 20. Faire l'analyse et déduire l'algorithme d'un programme permettant de calculer l'écart entre le plus grand réel et le plus petit réel se trouvant dans T.
Exemple : n= 6 et T contient 15 - 28.3 - 60.45 - 10 - 2.15 - 58
L'écart = 60.45 - 2.15 = 58.30
Voilà mon travail:
Program Ecart;
Uses WinCrt;
Type TAB = Array [5..20] of integer;
Var i,j,n,V_max,V_min:integer; T:TAB;
Procedure lire (Var x:integer);
Begin
Repeat
Writeln ('Donnez la taille du tableau'); Readln (x);
Until (x in [5..20]);
End;
Procedure remplir (Var V:TAB;y:integer);
Var i:integer;
Begin
For i:= 1 To y Do
Begin
Writeln ('Donnez la valeur de l"éléments N° ',i);
Readln (V[i]);
End;
Function max (Var V: TAB; x,y: integer):integer;
Var i, Vmax :integer;
Begin
Vmax := V[x];
For i:= x + 1 To y Do
If Vmax < V[i] Then Vmax := V[i];
max := Vmax;
End;
Function min (Var V:TAB;x,y:integer):integer;
Var i,Vmin:integer;
Begin
Vmin := V[x];
For i:= x + 1 To y Do
If Vmin > V[i] Then Vmin := V[i];
min := Vmin;
End;
Begin
lire (n);
remplir (T,n);
V_max := max (T,i,j);
V_min := min (T,i,j);
Writeln ('La valeur maximal dans cet intervalle = ',V_max);
Writeln ('La valeur minimal dans cet intervalle = ',V_min);
End;
Var R: integer;
Begin
R:= V_max - V_min;
Write ('L''écart = ', R );
Readln (R);
End.
Je sais pas pk on m'affiche erreur au niveau de "Function max (Var V: TAB; x,y: integer):integer;" pouvez vous m'aider? merci
A voir également:
- On m'affiche erreur au niveau d'1e instructio
- Mise a niveau windows 7 vers 10 - Accueil - Mise à jour
- Le clavier de mon telephone ne s'affiche plus - Guide
- Clé mise a niveau windows 7 - Guide
- Erreur 0x80070643 - Accueil - Windows
- Erreur t32 ✓ - Forum Livebox
1 réponse
Le problème c'est que tu déclares function max, avant d'avoir terminé procedure remplir.
En indentant correctement, tu verrais tout de suite que procedure remplir a deux Begin, mais un seul End. Le compilateur ne comprend donc pas pourquoi tu déclares ta function max à l'intérieur de la procedure remplir.
Et avant que tu poses la question, tu as une autre erreur une fois celle-ci corrigée. En effet tu as deux blocs principaux begin end. Le premier qui commence par lire (n); et le deuxième qui commence par R:= V_max - V_min;
Or il ne t'en faut qu'un seul par programme...
La confiance n'exclut pas le contrôle
En indentant correctement, tu verrais tout de suite que procedure remplir a deux Begin, mais un seul End. Le compilateur ne comprend donc pas pourquoi tu déclares ta function max à l'intérieur de la procedure remplir.
Et avant que tu poses la question, tu as une autre erreur une fois celle-ci corrigée. En effet tu as deux blocs principaux begin end. Le premier qui commence par lire (n); et le deuxième qui commence par R:= V_max - V_min;
Or il ne t'en faut qu'un seul par programme...
La confiance n'exclut pas le contrôle
En effet ces variables sont à nouveau déclaré par les fonctions et procédures, ou utilisés comme paramètre.
Il y a donc coexistence de plusieurs variables de même nom ! Sais-tu laquelle des deux est utilisée au final ? Par exemple, dans le programme principal quand tu fais max(T,i,j); sais-tu que valent i et j ?
Si tu as besoin de variables dans le programme principale, déclares les juste avant le begin end.
Mais il ne faut pas oublier d'initialiser toutes les variables avant de les utiliser sinon elles n'ont aucun sens, par exemple ici tu utilises i et j mais qui n'ont pas de valeur !