IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

De la comparaison


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2013
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Février 2013
    Messages : 317
    Par défaut De la comparaison
    Bonjour à tous(tes), le soucis:
    soit un tableau de valeurs entre 28 et 95 (tableau: z[ ]
    les valeurs ne se suivent pas (paramètres de notes midi)
    un dispositif en extrait 6 aléatoires
    qui sont mises sans un tableau t[ ]
    Soit par ailleurs 7 combinaisons: (1;2;3;4;5;6;7) de valeurs de z[ ]
    nommées: a;b;c;d;e;f pour l'explication ci-dessous
    telles que a:
    a2 =a1+7; a3=a2+7; a4=a3+7; a5=a4+7;a6=a5+7
    b2 =b1+7; b3=b2+7; b4=b3+7; b5=b4+7;b6=b5+7
    c2=.....ext..
    .....g6=g5+7
    je voudrais tester si l'une des valeurs de t[ ] est égale à l'une des valeurs des 7 combinaisons
    Si = Alors mettre le nom (1;2;3;4;5;6;7) de la combinaison dans la variable: r
    Pour faire fonctionner j'ai fait avec du "si alors" par bottes de 7; mais je pressens qu'il doit y avoir moyen de faire ça dans une boucle; pour l'instant rien ne marche je me perd dans le raisonnement, sans parler des soucis de dépassements.
    A l'aide les gros cerveaux please merci.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    ton résonnement est un peu confus
    honnêtement j'ai pas tout compris

    donc tu as un tableau de 67 valeurs différentes [28..95]
    tu as 7 Combinaisons 1..7
    ces combinaison on 7 valeurs a;b;c;d;e;f;g comprise entres [28..95]
    les combinaison sont créer de tels façon que
    a2 = a1+7;
    a3 = a2+7;
    a4 = a3+7;
    a5 = a4+7;
    a6 = a5+7;

    ce qui implique que le choix de la première valeur se réduit a la borne supérieur 95-42 = 53
    => 53+7*6 = 95

    tu doit donc choisir aléatoirement les première valeur entre [28..53]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Pour toutes les combinaison Faire 
      Combinaison[x][1] = Random(28..53)
      Pour Id = 2  jusqu'a 7 Faire 
        Combinaison[x][ID] =   Combinaison[x][ID-1]+7
      FinFaire
    FinFaire
    voila a peu prés ce que j'ai compris

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2013
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Février 2013
    Messages : 317
    Par défaut
    J'y suis arrivé en mettant les combinaisons en chaînes puis en tableaux et en traitant les notes dès leur génération
    Chaînes <---> Tableaux, c'est l'arme fatale

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 229
    Par défaut
    Dans tes données, quand tu connais a1, tu connais aussi a2 et les suivants.

    Ici, en testant si modulo(a1-b1,7) = 0, ça fait un seul test, et ça permet presque de savoir si une des valeurs a1,a2...a6 est égale à une des valeurs b1,b2,...b6

    Reste à gérer ce qui se cache derrière le mot "presque". Si modulo(a1-b1,7) = 0, il faut alors tester la différence entre a1 et b1. Si cette différence est supérieure à 35, les 2 séries ne se superposent pas, et si cette différence est inférieure ou égale à 35, les 2 séries ont au moins un nombre en commun
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    si modulo(a1-b1,7) = 0 _et_ abs(a1-b1) <=35 alors 
     premiere_valeur_commune = max(a1,b1) 
    sinon
      ... pas de valeur en commun
    fin
    Reste à boucler pour comparer (a1,c1), (a1,d1) etc etc

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2013
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Février 2013
    Messages : 317
    Par défaut
    @: tbc92: Cite: "Dans tes données, quand tu connais a1, tu connais aussi a2 et les suivants."

    Hélas non, car les # et les bémols ne sont pas distribués équitablement.
    Mais en traitant les notes dès la génération j'élimine un tableau
    et ça se réduit à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    pour a=1 to 7 //noms des combinaisons
        pour b=1 to 6 //valeurs
           si note=comb(a,b) alors r=a
       b suivant
    a suivant

  6. #6
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut De la comparaison
    Bonjour,

    Pour autant que j'ai pu comprendre tes précisions, les outils proposés sont-ils appropriés ?

    Le premier tableau mentionné:
    Citation Envoyé par valentin03 Voir le message
    ... soit un tableau de valeurs entre 28 et 95 (tableau: z[ ]
    les valeurs ne se suivent pas (paramètres de notes midi) ...
    fait penser à une mélodie, tandis que les combinaisons qui viennent ensuite:

    Citation Envoyé par valentin03 Voir le message
    ... Soit par ailleurs 7 combinaisons: (1;2;3;4;5;6;7) de valeurs de z[ ]
    nommées: a;b;c;d;e;f pour l'explication ci-dessous
    telles que a:
    a2 =a1+7; a3=a2+7; a4=a3+7; a5=a4+7;a6=a5+7
    b2 =b1+7; b3=b2+7; b4=b3+7; b5=b4+7;b6=b5+7
    c2=.....ext..
    .....g6=g5+7
    je voudrais tester si l'une des valeurs de t[ ] est égale à l'une des valeurs des 7 combinaisons
    Si = Alors mettre le nom (1;2;3;4;5;6;7) de la combinaison dans la variable: r ...
    renvoient aux sept notes de la gamme:
    (La, Si, Do = Ut, Ré, Mi, Fa, Sol) = (A, B, C, D, E, F, G) en notation anglo-saxonne.

    Or une mélodie, même très simple, présente presque toujours des altérations, et le tableau initial de 68 notes (95 - 28 + 1) comporte nécessairement les 12 sons de la gamme tempérée:
    (C, C#, D, Eb, E, F, F#, G, G#, A, Bb, B)
    en raison de son étendue, puisqu'il couvre plus de 5 octaves (68/12).

    J'ai l'impression que tu souhaites faire l'impasse sur les altérations, ce qui constitue une perte essentielle d'information, et surtout complique singulièrement le travail, comme tu l'as toi-même pressenti:
    Citation Envoyé par valentin03 Voir le message
    ... Hélas non, car les # et les bémols ne sont pas distribués équitablement ...[/CODE]
    Des tableaux impliquant une arithmétique modulo 12 ne conduiraient-ile pas à un algorithme plus simple ?

    Ce lien n'est pas sans rapport avec le sujet.

Discussions similaires

  1. Data Integrator Table Comparison
    Par Sabine26 dans le forum Alimentation
    Réponses: 4
    Dernier message: 31/03/2010, 08h54
  2. Comparison de chaînes
    Par litle-hacker dans le forum Débuter
    Réponses: 2
    Dernier message: 11/06/2008, 13h45
  3. comparison de tri
    Par space-cowboy dans le forum Mathématiques
    Réponses: 8
    Dernier message: 05/04/2008, 21h48
  4. Réponses: 12
    Dernier message: 22/12/2006, 00h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo