Bonsoir
Bonjour Eric
Ca ne me tri rien du tout, à l'exécution on voit le vecteur initial s'afficher mais pas le vecteur trié
bon. Je n'ai jamais codé en Pascal.
Ton raisonnement a l'air bon.
Mais je ne sais pas trop comment fonctionne le passage des parametres dans les procédures.
La procédure retourne t-elle quelquechose?
Lorsque tu appelles Permute sur le vecteur u, est-ce que u est modifié, ou seulement une copie?
Je pense que le probleme est de cet ordre.
As tu essayer d'afficher le vecteur à l'intérieur de la procédure?
Merci de t'intéresser à mon problème
Les procédures ne retournent rien (à l'inverse des fonctions).
Lorsque j'appelle Permute sur u, oui u est modifié (normalement, là c'est pas le cas )
Et oui j'ai essayé d'afficher le vecteur mais le compilateur râle, apparemment avec ce type on ne peut pas écrire write(u);
Salut Kévin et Eric
Que signifient les instructions writeln et readln ?
Je n'ai jamais non plus programmé en Pascal, donc c'est pas dit que je puisse t'aider
Sinon ta procédure de génération d'un vecteur aléatoire fonctionne correctement?
Fractal
A mon avis ca écrit et va à la ligne (comme en java), mais ca écrit quoi? bonne question. le vecteur courant u?
Voui c'est pour ça, je trouve bizarre une fonction qui écrit mais qui ne prend aucun paramètre, comment elle peut savoir que c'est u qu'on veut écrire?
Et puis si cette fonction marche, pourquoi ne pas l'utiliser dans la procédure pour essayer de trouver ce qui plante.
Fractal
Salut guillaume
Ca y est ça marche ! Le message de 22:27 d'eric était la solution, c'était pas grand chose finalement !
Merci à vous deux
J'aurai peut-être besoin de vos lumières, je continue à travailler sur le problème
PS : Ca a l'air de te plaire l'info guillaume
Voui, j'adore l'info ^^
J'avais déjà programmé avant, mais ça faisait longtemps que j'avais pas fait grand chose et là je suis entrain de redécouvrir la programmation (même si j'aurais préféré un autre langage que Caml...)
Fractal
lol
moi cette année j'aurai fait C ,Java, PHP,SQL,UML,XML,shell...
mais jamais fait de pascal ni Caml
Bonsoir,
je ne connais pas le pascal, en revanche le Caml fait partie de notre vie de taupin ... Tu pourrais faire l'analogie :je nomme prog le programme
Let prog v =
let n= vect_length v
ans v'=make_vect 0 n
(*je crée vecteur qui contient 0 et de même longueur que v*)
and j=ref 0 (*j contiendra l'indice des impairs*)
ans i=ref 0 in (*i contiendra l'indice des pairs*) in
for k =0 to n-1 do
if v.(k) mod 2
zut erreur de frappe je reprend :
Let prog v =
let n= vect_length v
and v'=make_vect 0 n
(*je crée vecteur qui contient 0 et de même longueur que v*)
and j=ref n-1 (*j contiendra l'indice des impairs*)
ans i=ref 0 in (*i contiendra l'indice des pairs*) in
for k =0 to n-1 do
if v.(k) mod 2 = 0 then
v'.(i)<-v.(k);
i:=!i +1
else v'.(j)<- v.(k);
j:=!j-1;
done;
!v;;
hatimy -> Il ne peut pas y avoir plusieurs instructions dans un if, il faut que tu mettes des begin end. De plus t'as oublié quelques points d'exclamation
En prépa tout le monde n'apprend pas le Caml, dans le lycée de Kévin ils ont choisi le Pascal à la place.
Fractal
Begin
En effet, j'ai oublié l'exclamation avant le v', mais bon à 3h du mat on manque de vigilance ...
Par contre pour le coup du begin end, on m'a jamais appris ça, on m'a plutôt dit qu'on l'utilisait qu'on voulait définir une même variable dans un même programme ... grossomodo elles jouent le rôle de parenthèse ...
Et puis j'ai toujours cru qu'on n'enseignait que le Caml, vu le faible effectif des élèves qui composent avec le Pascal d'après ce qui est signalé dans les concours. Dans tous les cas j'aurais préféré le Pascal.
End
Si tu rentres le programme suivant, il ne passe même pas le compilateur :
Bonsoir
Je suis sur un autre problème, intéressant mais mon programme ne fournit rien (et encore une fois aucune erreur n'est signalée).
Salut Kévin
Je ne pourrai pas te corriger sur la syntaxe, mais l'algorithme me semble correct.
Ensuite il y a toujours quelque chose que je ne comprends pas, c'est comment tu es censé récupérer le résultat à la fin? Tu exécutes ta fonction mais il n'y a pas d'instruction d'affichage ou autre, si?
D'autre part, as-tu moyen de faire des fonctions récursives en Pascal? Bien que ton algorithme me semble parfaitement correct, il m'aurait semblé plus naturel de le faire en récursif.
Fractal
Salut Guillaume
Je pensais que puisque c'était une fonction le résultat s'afficherait sans rien demander non ?
Et oui on peut faire du récursif en Pascal mais c'est quelque chose que je ne maitrise pas vraiment.
Et tsé quoi, en Caml les noms des variables peuvent aller jusqu'à 16 millions de caractères
Promis, c'est tiré du manuel officiel de Caml ^^
Fractal
Roh t'es génial Guillaume ça marche
Pour la peine je rend mon devoir avec :
J'ai été voir
Sache qu'en général ce n'est pas autorisé d'aller sur d'autres topics pour demander de l'aide
Voué ^^ J'essaye
On arrive à se parler entre deux ordis de la maison, c'est déjà ça, mais c'est que par le réseau local pour l'instant, je sais pas si ça marche pour deux ordinateurs connectés uniquement par internet, doit y avoir tous les pare-feux qui vont se réveiller pour empêcher les informations de passer
Fractal
Et c'est balèse à coder ?
Ca me rappelle en MPI en seconde, on avait trouvé un truc pour se parler d'un ordi à l'autre sous ms dos ^^
Non, la partie gestion du réseau est facile, suffit de trouver les quelques commandes nécessaires, mais ça se fait facilement. Après faudra que je voie comment faire pour que chacun puisse parler n'importe quand, parce que la commande qui permet de récupérer ce que l'autre a écrit est bloquante, c'est à dire qu'il est impossible de faire autre chose pendant ce temps, c'est pas pratique.
Fractal
Re infophile,
Pour ton programme, moi je voudrais te proposer quelque chose un poil plus compliqué :
si on a deux séquences u et v représentées par des vecteurs, comment verifier
si v est dans u dans le sens où les bases qui constituent v doivent se succéder dans u.
exemple : u = GTACGTTA et v = ACGT alors v est incluse dans u.(le mot "inclus" je l'ai inventé ).
Tu comprend ce que je cherche ?
Ton programme me paraît long. Est ce dû au langage Pascal lui même ?
je propose ce qui suit :
Let sous-sequence u v =
(*on vérifiera si v est sous-séquence de u*)
let i =ref 0 (*indique l'indice d'un élément de v*)
ans n= vect_length v
and m = vect_length u
and b = ref True in
While !b do
for j =0 to n-1 do
i:=0
while v.(!i)<>v.(j) do
if !i < m then i:=!i+1 (*Fractal j'espère que c'est bon cette fois-ci *)
else b:=False
done
done
done;
!b;;
Bonjour ^^
moi j'aimerais resté dans les données de ton vecteur et résoudre ce problème.
C'est quoi cette fonction Pos ?
Oui, là le coût du programme doit être grossomodo de l'ordre de np avec n la longueur de ta liste et p la longueur de ton mot (je trouve qu'il vaut dans le pire des cas p.(n-(p+1)/2) )
Je sais pas s'il peut y avoir une astuce pour avoir un coût moindre...
Re-bonjour
J'ai de nouveau un tout petit problème :
est ce que tu l'a fait récursivement ton programme ? Comment est ce qu'on déclare la récursivité en Pascal ?
Non je n'ai pas fait de récursif, en plus ça ne fonctionne pas chez moi, par exemple j'ai essayé de trouver le bit p d'un nombre a en récursif et j'ai une erreur à la compilation :
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :