Problème de random qui donne des valeurs injustes
Résolu
piAm96
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
-
PiAm96 -
PiAm96 -
Bonjour,
Je vous présente un script pascal qui m'a rendu bouche bée.
Il consiste à remplir un tableau par n entiers <100 aléatoirement.
Le problème c'est que les valeurs rendus par cette fonction sont illogiques.
de plus même en supprimant l'instruction d'affectation, le tableau garde les mêmes valeurs dedans...
Merci beaucoup d'avance pour votre aide.
SCRIPT:
Je vous présente un script pascal qui m'a rendu bouche bée.
Il consiste à remplir un tableau par n entiers <100 aléatoirement.
Le problème c'est que les valeurs rendus par cette fonction sont illogiques.
de plus même en supprimant l'instruction d'affectation, le tableau garde les mêmes valeurs dedans...
Merci beaucoup d'avance pour votre aide.
SCRIPT:
program tri; uses wincrt; type tab=array[5..20] of integer; var t:tab; n:integer; procedure saisie(var t:tab ; var n: integer); var i: integer ; begin repeat write('n=') ; readln(n); until n in [5..20] ; for i:=1 to n do t[i]:=(random(100)); end; procedure afficher(t:tab ; n :integer) ; var i: integer; begin for i:=1 to n do writeLN('t[',i,']',t[i]) end; begin randomize; saisie(t,n); afficher(t,n); end.
A voir également:
- Pascal random
- Turbo pascal - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev pascal - Télécharger - Édition & Programmation
- Le protocole assure que la communication entre l'ordinateur de pascal et le serveur de visiodoct est car les informations seront avant d'être envoyées. - Forum Pascal
- Aide en Pascal - Forum Pascal
1 réponse
Bonjour,
Ce qui est illogique c'est de déclarer un tableau
Il faudrait que tu changes ton type en
Remarque : c'est également mauvais de déclarer
Ce qui est illogique c'est de déclarer un tableau
array[5..20]et de l'utiliser
for i:=1 to n. Les valeurs de 1 à 4 n'appartenant pas au tableau, elles ne peuvent donc pas être modifiées par un accès à t[i].
Il faudrait que tu changes ton type en
array[1..20]
Remarque : c'est également mauvais de déclarer
var t:tab; n:integer;au début du programme, car cela en fait des variables globales et il y a une ambiguïté dans les procédures à savoir si t et n sont les variables globales ou les arguments. Il vaut mieux faire la déclaration juste avant le
begin end.du programme principal.
C'est très gentil de votre part :)