Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
893 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  débutant algorithme simple

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

débutant algorithme simple

n°1953203
sephi37
Posté le 26-12-2009 à 12:18:57  profilanswer
 

Bonjour, je suis étudiant en première année d'une école d'ingénieur et j'ai de gros problèmes en algorithmique... J'espère que quelqu'un prendra le temps pur me répondre.
C'est une question simple mais puisque je ne fais qu'une dizaine d'heures de cours d'algo, je ne m'en sors pas.
 
Je dois écrire en pseudo-code, un algorithme de déclaration d'une fonction appelée moyEleve1, de paramètres les listes notesEleve et coeff qui retourne comme résultat la moyenne d'un élève sachant qu'à chaque élève on associe une liste de 5 éléments apelée notesEleve et que chaque matière est affectée d'un coefficient définit par une liste de 5 éléments coeff. (il y a une note par matière).
 
Mathématiquement ce n'est pas bien compliqué , il suffit de faire la somme du produit des notes et des coeff le tout divisé par la somme des coeff. Mon problème est dans la traduction en pseudo-code.
 
moyEleve1(entrée:notesEleve, coeff)
list1{a,b,c,d,e}←notesEleve;
list2{a1,b2,c3,d4,e5←coeff;
Pour i de 1 à 5, et j de 1 à 5 faire res←Somme(list1{i}*list2{j});
                                       fait
Pour j de 1 à 5, faire som←Somme(list2{j});
                      fait
resultat←res/som;
Retourner(resultat); )
 
 
Puisque je n'ai aucun moyen de vérifier l'exactitude de ceci, j'ai essayer de le traduire en MATHEMATICA pour le tester mais cela ne fonctionne pas.
 
J'espère que quelqu'un pourra m'éclairer.
 
Merci d'avance

mood
Publicité
Posté le 26-12-2009 à 12:18:57  profilanswer
 

n°1953222
cbeyls
Hail to the King, Baby
Posté le 26-12-2009 à 14:54:30  profilanswer
 

normalement une boucle simple suffit.
Voilà l'algo que j'écrirais:
 

Code :
  1. vérifier que la taille de list1 == la taille de list2
  2. res = 0
  3. som = 0
  4. pour i allant de 1 à la taille de list1
  5.    res = res + (list1[i] * list2[i])
  6.    som = som + list2[i]
  7. si som == 0
  8.    retourner 0
  9. sinon
  10.    retourner res/som

n°1953235
sephi37
Posté le 26-12-2009 à 18:45:36  profilanswer
 

Merci beaucoup je vais le tester sur mathematica.

n°1953239
sephi37
Posté le 26-12-2009 à 19:50:36  profilanswer
 

Je dois faire des erreurs au niveau de la traduction mathématica.... je n'arrive pas faire fonctionner cette fonction moyenne .  
 
moyEleve1[notesEleve_, coeff_] := (
  list1[[i]] = notesEleve;
  list2[[i]] = coeff;
  res = 0;
  som = 0;
  Do[res = res + (list1[[i]]*list2[[i]]);
   som = som + list2[[i]];
   If[som == 0,
    Return[0],
    Return[res/som]],
   {i, 1, Length[list1[[i]]]}])
 
moyEleve1[{10, 13}, {2, 4}]
en le testant avec 2 notes, 10 et 13 de coeff respectif 2 et 4, le resultat n'aboutit pas, il y a des messages d'erreurs....
 
je ne m'en sors pas !

n°1953241
cbeyls
Hail to the King, Baby
Posté le 26-12-2009 à 21:40:24  profilanswer
 

Je ne connais pas la syntaxe mathematica mais ça a effectivement l'air incorrect.
 
Essaye plutôt la syntaxe Java non?

n°1953244
sephi37
Posté le 26-12-2009 à 22:27:12  profilanswer
 

Je suis qu'en première année et je n'y connais rien. On a juste eu quelques cours d'algo et on travaille uniquement sur mathematica... le choix de l'école. ça doit encore a cause d'un point , une virgule ou une acolade ... ^^

n°1953261
Joel F
Real men use unique_ptr
Posté le 27-12-2009 à 11:07:34  profilanswer
 

poste tes message d'erreurs :o

n°1953347
cbeyls
Hail to the King, Baby
Posté le 28-12-2009 à 01:26:51  profilanswer
 

Non tu n'as pas traduit l'algorithme correctement, on dirait que tu as mis le return dans la boucle, or moi je l'ai mis après la boucle (regarde l'indentation).
 
De plus, tu dois simplement utiliser les paramètres notesEleve et coeff qui te sont passés en paramètre. Inutile de les assigner à liste1 et liste2. Tu les initialises également de façon incorrecte puisque tu assignes le tableau à l'indice i au lieu de l'entièreté du tableau, qui plus est alors que i n'a pas encore été déclaré ou initialisé.
 
Je trouve cette syntaxe mathematica très peu lisible avec ce tas de crochets et accolades dans tous les sens. Quelle idée d'enseigner ça en première alors que Java ou du Pascal ou même du C est nettement plus compréhensible! Ou pourquoi pas du Basic, qui se rapproche nettement plus du pseudo-code que n'importe quel autre langage.


Message édité par cbeyls le 28-12-2009 à 01:29:11

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  débutant algorithme simple

 

Sujets relatifs
Erreur d'une requéte trés trés simpleerreur sur stringstream surrement simple mais pas trouvée encore
Programmation VB problèmes de débutantAide applet java niveau débutant
[C] Programme simpleAlgorithme de repartition en pourcentage
j'ai besoin d'un script commerce simple commeQuel tuto pour un formulaire php simple? (NOVICE)
Algorithme d'un Moteur de reservation[débutant] iterateur
Plus de sujets relatifs à : débutant algorithme simple


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR