Aide pour algoithme en pascal (informatique)

katya_ben - 3 juin 2008 à 21:20
 dark5 - 19 févr. 2009 à 20:24
bonjour,
j'aimerais comprendre cet exercce svp c'est urgent quelqu'un pourrait m'expliquer svp ?



PROCEDURE insertion_fin(tete : pointeur;valeur : integer);
var v:integer;
begin
new(p2);
p:=tete;
while (p^.suivant<>NIL) do
begin
p:=p^.suivant;
end;
p^.suivant:=p2;
p2^.valeur:=valeur;
p2^.suivant:=NIL;
end;
A voir également:

5 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
4 juin 2008 à 19:55
Je ne suis pas expert en traitement dynamique, alors que les experts me pardonnent, je parle de novice à novice...

le type pointeur correspond à une sorte de collier de perle dont chaque perle possède une valeur (integer) et un élément suivant (éventuellement NIL si pas de suivant) j'utiliserai cette métaphore pour expliquer le programme.

La fonction insertion_fin(tete,valeur) remonte le collier qui contient la perle 'tete' et accroche à sa fin une nouvelle perle de "couleur" 'valeur'

Plus en détail :

new(p2); // on attribue à 'p2' une nouvelle valeur, c'est à dire une "adresse" dans l'ordinateur, on a ainsi créer virtuellement un nouveau "collier de perle" ne contenant qu'une perle.

p:=tete; // on attribue à 'p' la valeur de 'tete', c'est à dire qu'on choisi une perle de 'tete' qui sera le point de départ du traitement de la procédure, et que l'on pointe (du doigt pour l'image)

while (p^.suivant<>NIL) do p:=p^.suivant; // tant qu'il y a une "perle" à la suite de celle que l'on pointe on décale notre "doigt" sur la perle suivante.

p^.suivant:=p2; // la nouvelle perle que l'on a créée au début est "accrochée" à la fin du collier de perle que l'on pointe avec p

p2^.valeur:=valeur; // la valeur de cette perle (sa couleur) est attribué par 'valeur' (pris en entrée de la procédure)

p2^.suivant:=NIL; // on indique qu'il n'y a pas de perle à la suite de cette nouvelle que l'on vient de créer

Exemple :

'tete' correspond à l'adresse de la cellule 1/5/3/9/4/9/NIL/
on utilise insertion_fin(tete,6);
'tete' correspond désormais à l'adresse de la cellule 1/5/3/9/4/9/6/NIL/

Voilà je pense avoir été (très) clair, mais si il y avais encore quelques zones d'ombres...
2
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
3 juin 2008 à 23:19
Salut, il serait plus facile pour t'aider de nous donner le type de 'pointeur' et de 'p2', les unités utilisées pour ton programme.
Là comme ça on dirait un traitement dynamique d'une pile ou d'une liste peut-être...
Précise tout ça et j'arrive...
0
oui désolée, c'est parce que moi en fait, je suis pas du tout dans ces etudes-là, c'est pour aider un ami... donc je m'y connais pas du tout --' le logiciel utilisé s'appelle FPS (Free Pascal) si ça peut t'aider ! merci d'avance !! :)

program Noname0;
var valeur:integer;
var n,i,recherche:integer;


type pointeur=^cellule;
cellule=record
valeur:integer;
suivant:Pointeur;
end;


var tete:Pointeur;
var p,p2,pp,res:Pointeur;
0
merci !!! c'est sympa je commence à comprendre un peu ^^
mais ce qui est clair c'est que j'irai jamais en IUT informatique !!!!! =)
0
Mwarf ! C'est très bien le DUT Info naméhooo :p
M'enfin uep merci pour ton aide Katya, t'aura ta lettre de recommandation en échange :D

(vacances maintenant)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cet un programme tu peut l'enrigistrer sur pascal pour que tu répond
ouvrir pascal tu déja va voir des ecriture tu peut le completer par ces données
0