Avis sur deux résolutions d'un même exercice

Résolu/Fermé
bornin90s Messages postés 44 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 6 juillet 2018 - 3 juil. 2018 à 21:11
bornin90s Messages postés 44 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 6 juillet 2018 - 3 juil. 2018 à 23:45
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 :

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

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié le 3 juil. 2018 à 23:32
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 :

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.
1
bornin90s Messages postés 44 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 6 juillet 2018
3 juil. 2018 à 23:45
Ok merci bcp
0