S.O.S Je sèche sur la syntaxe !
Posté le 04/05/2008 17:31
Salut à tous
J'ai un programme sur Graph 35+,et je sèche sur la méthode à suivre !
Je vous expose le problème:
Nous avons:
- une Mat A[32,8]
- une List3[8]
- une List4[32]
Il s'agit d'un questionnaire de 8 questions sur 32 personnes.
La matrice comprend les réponses des 32 personnes au 8 questions.
Une 33e personne vient de faire ce questionnaire et a rempli la Liste 3 avec ses réponses.
Les réponses sont sous la forme 1,2,3 ou 4.
Donc la Liste 3 est remplie par exemple disons par: 3,3,3,1,2,1,3,3 .
J'ajoute que la Matrice A est remplie seulement par des1,2,3 ou 4.
Voilà.
Je souhaite cette 33e personne recherche le nom de la personne qui a déjà fait le questionnaire (et donc dont les réponses sont dans la matrice) et qui a le plus de réponses en commun.
Pour cela, le programe devrait faire ceci:
Pour toutes les cellules de la matrice et toutes les cellules de la liste 3.
Je voudrais que le programme compare comme suit:
If MatA[1,1]=List3[1] : Then List4[1]+1->List4[1]
Et ainsi de suite...( C'est à dire MatA[1,2]
avec List3[2]
Puis MatA[1,3] avec List3[3]
Puis MatA[1,4] avec List3[4]
.... Puis MatA[1,8] avec List3[8]
Puis MatA[2,1] avec List3[1] mais la valeur "1" s'ajoute à la List4[2]
Et ainsi de suite jusqu'à :
MatA[32,8] avec List3[8], où la valeur 1 s'ajoute à List4[32]
C'est cette partie ci-dessus qui me pose problème, je ne sais pas comment rédiger tout ça en programme, sans rentrer dans la calculette toutes les commandes pour demander de faire les comparaisons une à une.
Y a-t-il une solution ?
La suite est sans problèmes:
On obtient donc une Liste 4 (dont chaque ligne est égale à une personne: de1 à 32), remplie:
En effet, plus une personne a un "score" élevé, plus il a de points en commun avec la 33e personnne.
Il suffit donc de calculer le maximum de la liste 4 pour savoir quelle personne ale plus de points en commun avec la 33e personne.
Merci d'avance pour les précisions que vous saurez me donner pour écrire cette partie difficile de programme sans détailler toutes les comparaisons.
Citer : Posté le 10/02/2017 07:48 | #
Salut,
Tu m'excuseras de répondre en vitesse...
Effectivement, comparer le cases une à une est possible, mais tu peux aller un poil plus vite en calculant les écarts "personne par personne". Par exemple tu découpes ta Matrice en autant de List qu'elle n'a de ligne (32 personnes donc), et tu viens chercher celle dont la somme des carrés des différences terme à terme avec la List 3 est minimale.
Sinon, et même dans tous les cas je dirais, je te conseille d'utiliser des boucles et des indices. Tu peux tout à fait faire varier un paramètre A par exemple, et l'utiliser comme indice pour la lecture d'une case : List[A] ou Mat[A, B] (cf les tutoriels à ce sujet).
Bon courage.
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 10/02/2017 08:50 | #
Wow. Presque 9 ans.
Citer : Posté le 10/02/2017 12:53 | #
Tu m'excuseras de répondre en vitesse...