Inscription / Connexion Nouveau Sujet
Niveau autre
Partager :

attribution de valeurs dans une liste sur algobox

Posté par
sbarre
19-03-13 à 12:12

bonjour,
je souhaite attribuer toutes les valeurs d'une liste a des variables dans algobox


par exemple j'ai une liste composee des nombres 1;2;3;4 et 5  et les variables a;b;c;d et e. Je souhaite attribuer toutes les valeurs possibles de la liste a a (pour a de ...a...) puis attribuer a b tous les valeurs restantes(donc autres que celle de a) etc.

Le but etant de faire des operations diverses ensuite. Je pourrais effectivement ne pas limiter les variables aux valeurs differentes de celles attribuees aux variables precedentes, mais cela augmenterait inutilement le nombre de combinaisons 5! dans un cas et 5^5 dans láutre. (plus flagrant si on a dix variables au lieu de 5 bien sur).

J'imagine qu'il faut faire evoluer la liste pour en supprimer les valeurs attribuees mais je n'ai aucune idee de comment faire (a dire vrai, je ne sais meme pas comment creer la liste de depart compose des entiers de 1 a 5....).

Merci d'avance pour votre aide  

Posté par
Glapion Moderateur
re : attribution de valeurs dans une liste sur algobox 19-03-13 à 13:53

Bonjour, tu peux programmer bestialement en truffant le code de boucles et de SI :

(Pour faire marcher le programme, fait un copier/coller en mode éditeur de texte dans algobox)

VARIABLES
L EST_DU_TYPE LISTE
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
d EST_DU_TYPE NOMBRE
e EST_DU_TYPE NOMBRE
I1 EST_DU_TYPE NOMBRE
I2 EST_DU_TYPE NOMBRE
I3 EST_DU_TYPE NOMBRE
I4 EST_DU_TYPE NOMBRE
I5 EST_DU_TYPE NOMBRE
P EST_DU_TYPE CHAINE
DEBUT_ALGORITHME
// remplissage de la liste de valeurs
L[1] PREND_LA_VALEUR 1:2:3:4:5
//
POUR I1 ALLANT_DE 1 A 5
DEBUT_POUR
a PREND_LA_VALEUR L[I1]
POUR I2 ALLANT_DE 1 A 5
DEBUT_POUR
SI (I2 != I1) ALORS
DEBUT_SI
b PREND_LA_VALEUR L[I2]
POUR I3 ALLANT_DE 1 A 5
DEBUT_POUR
SI (I3 != I2 ET I3 != I1) ALORS
DEBUT_SI
c PREND_LA_VALEUR L[I3]
POUR I4 ALLANT_DE 1 A 5
DEBUT_POUR
SI (I4 != I3 ET I4 != I2 ET I4 != I1) ALORS
DEBUT_SI
d PREND_LA_VALEUR L[I4]
POUR I5 ALLANT_DE 1 A 5
DEBUT_POUR
SI (I5 != I4 ET I5 != I3 ET I5 != I2 ET I5 != I1) ALORS
DEBUT_SI
e PREND_LA_VALEUR L[I5]
P PREND_LA_VALEUR " valeurs a="+a+" | b="+b+" | c="+c+" | d="+d+" | e="+e
AFFICHER* P
FIN_SI
FIN_POUR
FIN_SI
FIN_POUR
FIN_SI
FIN_POUR
FIN_SI
FIN_POUR
FIN_POUR
FIN_ALGORITHME

A ta disposition si tu ne comprends pas la logique de ce programme.

Posté par
sbarre
re : attribution de valeurs dans une liste sur algobox 19-03-13 à 15:56

Bonjour et merci pour la reponse

j'avais initialement pense a quelquechose de la forme

a  b c d e nombres
pour a de 1 a 5
  pour b de 1 a 5
    si b != a
      pour c de 1 a 5
        si c != a et c != b
          pour d de 1 a 5
           si d !=
etc ...

mais ca me semblait trop complique/bestial (pour reprendre l'expression) et ce d'autant plus que l'idee c'est d'etendre a plus de 5 valeurs a terme...

sa solution avec une liste ne me semble pas faciliter a la fois l'ecriture et surtout le fonctionnement pour l'algorithme puisqu'au total toutes les combinaisons sont testees (nn plutot que n!  si n est le nombre de valeurs a attribuer). Je crains qu'algobox ne coince sur le nombre d'operations au total!

Mon but avec les listes etait plus d'avoir une liste 1;2;3;4;5  qui devenait une liste 1;3;4;5 dans laquelle on choisit b si a a pris la valeur 2 (quitte a ce qu'il s'agisse de deux listes differentes (5 au total!).

saurais tu comment faire quelquechose comme ca?

Posté par
Glapion Moderateur
re : attribution de valeurs dans une liste sur algobox 19-03-13 à 21:23

Non algobox ne coince pas du tout. et il suffit que tu mettes le traitement que tu voulais faire à la place de l'instruction Afficher que j'ai mis dans l'algorithme. Ce que tu veux est exactement ce que j'ai fait.

Posté par
sbarre
re : attribution de valeurs dans une liste sur algobox 19-03-13 à 21:52

effectivement ça fonctionne; j'ai adapté avec plus de valeurs et ca ne bloque pas ;
merci beaucoup



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !