Probleme d'execution pascal
Résolu/Fermé
bach01
Messages postés
13
Date d'inscription
mardi 10 juin 2008
Statut
Membre
Dernière intervention
9 février 2009
-
10 juil. 2008 à 22:23
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 11 juil. 2008 à 16:30
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 11 juil. 2008 à 16:30
A voir également:
- Probleme d'execution pascal
- Turbo pascal download - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev-pascal - Télécharger - Édition & Programmation
- Erreur d'execution 1004 ✓ - Forum Excel
- Erreur d'exécution 13 incompatibilité de type ✓ - Forum Programmation
3 réponses
B
Messages postés
9
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
20 mars 2013
3
10 juil. 2008 à 23:37
10 juil. 2008 à 23:37
"stack" est le mot anglais de pile. Donc "stackoverflow error" veut dire que ton programme essaie d'empiler alors que la pile est pleine. Ce qu'il faut faire c'est d'augmenter la taille de la pile. Tu peux le faire de 2 façons:
- en utilisant la directive {M+, si j'ai bonne mémoire car ça fait longtemps que je ne programme plus en Pascal. En tout cas, regard dans l'aide de ton compilateur et chercher une directive de ce genre. Là tu verra comment augment la taille de la pile lors de l'exécution de ton programme.
- tu peux aussi augmenter la taille du segment de pile alloué aux programmes par ton compilateur à partir de l'interface de ce dernier. Regard dans le menu options et cherche stack segment, je pense
J'espère que tu pourra te retrouver même comme je ne suis pas très explicit
- en utilisant la directive {M+, si j'ai bonne mémoire car ça fait longtemps que je ne programme plus en Pascal. En tout cas, regard dans l'aide de ton compilateur et chercher une directive de ce genre. Là tu verra comment augment la taille de la pile lors de l'exécution de ton programme.
- tu peux aussi augmenter la taille du segment de pile alloué aux programmes par ton compilateur à partir de l'interface de ce dernier. Regard dans le menu options et cherche stack segment, je pense
J'espère que tu pourra te retrouver même comme je ne suis pas très explicit
KX
Messages postés
16760
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
11 juil. 2008 à 01:40
11 juil. 2008 à 01:40
J'ai compilé ton code sous Dev-Pascal, et j'obtiens le message d'avertissement concernant la fonction pos_min que j'ai donc corrigé :
Ça règle pas ton problème mais ça t'évitera déjà quelques autres erreurs...
Pour le reste il faudrait revoir tout ton code :
En effet tri_rapide(deb,p); et tri_rapide(p+1,x); tournent alors à l'infini !
function pos_min(j,n:integer):integer; var i:integer; begin pos_min:=j; for i:=j+1 to n do if t^[i]<t^[pos_min] then pos_min:=i; end;De plus ta variable globale j (5è ligne) n'est jamais utilisée
Ça règle pas ton problème mais ça t'évitera déjà quelques autres erreurs...
Pour le reste il faudrait revoir tout ton code :
procedure tri_rapide(deb,x:integer); var mid,aux,p:integer; begin if (deb<x) then begin mid:=(deb+x) div 2; aux:=t^[mid]; t^[mid]:=t^[deb]; t^[deb]:=aux; p:=deb; end; for i:=(deb+1) to x do begin if (t^[i]<t^[deb]) then begin p:=p+1; aux:=t^[i]; t^[p]:=aux; end; end; aux:=t^[p]; t^[p]:=t^[deb]; t^[deb]:=aux; tri_rapide(deb,p); tri_rapide(p+1,x); end;Au cas où deb>x, p n'est pas initialisé, ce qui fait planter le programme
En effet tri_rapide(deb,p); et tri_rapide(p+1,x); tournent alors à l'infini !
bach01
Messages postés
13
Date d'inscription
mardi 10 juin 2008
Statut
Membre
Dernière intervention
9 février 2009
2
11 juil. 2008 à 16:28
11 juil. 2008 à 16:28
j'ai placé un end la ou il ne fallait pas aussi et maintenant ke je lai remis au bon endroit sa marche.merci pr l'aide KX!
KX
Messages postés
16760
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
11 juil. 2008 à 16:30
11 juil. 2008 à 16:30
De rien... c'était pas trop dur cette fois !