Avis sur deux résolutions d'un même exercice
Résolu
bornin90s
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
bornin90s Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
bornin90s Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
Bonsoir j'aimerai avoir votre avis sur les deux résolutions de cet exo d'application. Selon qui des deux est la meilleure ?
Merci d'avance
Enonce
Soit une liste bidirectionnelle de politicien et une file d’attente de voleur. Ecrire un module qui crée une pile contenant tous les voleurs qui sont présent dans le lot des politiciens. Un politicien est caractérisé par son NCI, son nom,prenom,fonction, poste et nom parti.
Voleur :NCI,nom,prenom,protection,montant volé.
Résolution 1 :
Résolution 2 :
Merci d'avance
Enonce
Soit une liste bidirectionnelle de politicien et une file d’attente de voleur. Ecrire un module qui crée une pile contenant tous les voleurs qui sont présent dans le lot des politiciens. Un politicien est caractérisé par son NCI, son nom,prenom,fonction, poste et nom parti.
Voleur :NCI,nom,prenom,protection,montant volé.
Résolution 1 :
Type voleur= structure DEBUT NCI : entier Nom,prenom,fonction :chaine montant :entier FIN Type File = ↑structure DEBUT Info :voleur Suiv :File FIN Type politicien = structure DEBUT NCI :entier Nom,prenom,fonction,poste,nomParti :chaine FIN Type LBi = ↑structure DEBUT Info :politicien Prec,suiv :LBi FIN Type pile = ↑structure DEBUT Info :voleur Suiv :pile FIN Var tetef,queuef :File Var teteL,queueL :LBi Var sommet :pile Procedure application(donne :tetef,queuef :file teteL,queuL :LBi Resultat sommet :pile) Var V :voleur Var p :LBI DEBUT Initpile(sommet) Tantque(fileVide(tetef,queuef)=faux)Faire Defiler(tetef,queue,v) D ← faux P ← teteL Tantque(p != NIL et D= faux) Faire Si(p↑.info.NCI=V.NCI)alors D←vrai Empiler(v,sommet) Sinon P←p↑.suiv FINSI FINTANTQUE FINTANTQUE FIN
Résolution 2 :
type voleur = structure Debut nom,prenom,prot = chaine NCI = chaine montant = entier Fin type politicien = structure Debut nom,prenom,poste, parti= chaine NCI = chaine Fin var pol = politicien type Lbi = ↑structure Debut info: politicien suiv,prec: Lbi Fin var tete,queue = Lbi type fileV = ↑structure Debut info: voleur suiv: fileV Fin var tf, qf : fileV type pileV = ↑structure Debut info : voleur suiv : pile Fin var sommet = pile var pV = pileV Procedure Transfert ( D: tete, queue = Lbi tf, qf = fileV R: sommet = pile ) var p : Lbi var vol = voleur Debut initpile(sommet) Si (tete != Nil) Alors Allouer (p) p←tete Tantque (p!=Nil) Faire Tantque (filevide(tf, qf) = faux ) Faire Depiler(tf,qf,vol) Si(p↑info.NCI = vol.NCI ) Alors Empiler(vol, sommet) Finsi p←p↑.suiv Fintantque Fintantque Fin
A voir également:
- Avis sur deux résolutions d'un même exercice
- Comment faire deux colonnes sur word - Guide
- Deux whatsapp sur un téléphone - Guide
- Deux ecran pc - Guide
- Nombre de jours entre deux dates excel - Guide
- Un ecouteur sur deux marche ✓ - Forum Casque et écouteurs
1 réponse
Bonjour,
Ici tu ne fais quasiment plus vraiment de l'algorithmique, tu es déjà sur un pseudo langage, assez complexe, avec des notions de pointeurs mémoires, etc. Pour vérifier si tes codes sont bons (aux pointeurs près notamment) il faudrait passer sur un vrai code que tu pourrais compiler et tester.
Le langage Pascal est je pense celui dont la syntaxe se rapproche le plus de celle que tu manipules ici, et des logiciels comme IPcute te permettrait de voir l'évolution de ton programme.
Ceci étant dit, sur la partie algorithmique pure, on peut résumer la différence entre les deux propostions comme ceci :
Résolution 1 :
Résolution 2 :
Pour moi il y a un problème avec la deuxième solution car lorsque tu récupères un élément de la file il n'y est pas remis, donc tu ne peux pas faire plusieurs fois la boucle sur la file de voleurs.
L'approche de la première solution est meilleure car chaque voleur est utilisé une seule fois, et qu'il n'y a aucun problème à faire plusieurs fois la boucle sur la liste bidirectionnelle.
Ici tu ne fais quasiment plus vraiment de l'algorithmique, tu es déjà sur un pseudo langage, assez complexe, avec des notions de pointeurs mémoires, etc. Pour vérifier si tes codes sont bons (aux pointeurs près notamment) il faudrait passer sur un vrai code que tu pourrais compiler et tester.
Le langage Pascal est je pense celui dont la syntaxe se rapproche le plus de celle que tu manipules ici, et des logiciels comme IPcute te permettrait de voir l'évolution de ton programme.
Ceci étant dit, sur la partie algorithmique pure, on peut résumer la différence entre les deux propostions comme ceci :
Résolution 1 :
Pour chaque voleur qui sort de la file Pour chaque politicien de la liste bidirectionnelle Si le numéro du voleur est égal au numéro du politicien Alors ajouter le voleur à la pile
Résolution 2 :
Pour chaque politicien de la liste bidirectionnelle Pour chaque voleur qui sort de la file Si le numéro du politicien est égal au numéro du voleur Alors ajouter le voleur à la pile
Pour moi il y a un problème avec la deuxième solution car lorsque tu récupères un élément de la file il n'y est pas remis, donc tu ne peux pas faire plusieurs fois la boucle sur la file de voleurs.
L'approche de la première solution est meilleure car chaque voleur est utilisé une seule fois, et qu'il n'y a aucun problème à faire plusieurs fois la boucle sur la liste bidirectionnelle.
bornin90s
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
Ok merci bcp