Programmation fonction tri sous octave

lolo -  
 Seb -
Bonjour,
Je suis étudiant et en cours d'infomatique on m'a donné comme sujet de projet :

http://marine.edu.ups-tlse.fr/~truillet/ens/l3mi/projet/L3MI_Projet2010.pdf

Or la programmation n'est pas mon fort car je suis spécialisé dans la mécanique cependant j'ai réussi créer la fonction insertion, qui fonctionne, mais le reste marche beaucoup moins bien, j'ai besoin de votre aide svp, cela devient urgent.
Merci de vos réponses, cordialement.

4 réponses

  1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    function tri1 (i,j,T) 
      K=length(T) 
      for j=1:K 
        y=j 
        for i=j:K 
          if T(i+1)<T(y) 
            y=i+1 
          end 
        end 
      end 
      insertion (y,j) 
      ans=T

    il manque pas mal de chose en effet. Je pense que tu n'as pas du écrire l'algorithme avant de coder.
    Il y a pas mal d'érreurs dans un si petit code :
    à quoi servent i et j en paramètre de tri1 ?
    la boucle sur les "i" devrais s'arrêter à K-1, sinon tu risques le débordement de tableaux.
    Du coup, ta boucle sur j ne devrais pas aller jusqu'à K (K-1 ou K-2... à réfléchir).
    Pour finir, tu appels la fonction "insertion" sans le bon nombre de paramètre et en plus tu ne récupère pas la sortie.
    Au final, tu n'appelles qu'une fois "insertion" dans "tri1" alors que tu devrais en faire beaucoup plus.
    D'ailleurs, je ne suis pas trop sur du comportement de mettre la même variable ("T") en tant qu'entrée et sortie dans la fonction "insertion", il vaut mieux utiliser deux noms différents.

    Ce que tu doit faire :
    - pour la fonction insertion, la corriger
    - pour la fonction tri1, mieux vaut tout effacer et recommencer en réfléchissant posément.

    Un autre petit détail, pas de ta faute. "insertion" est un mauvais mot pour décrire la fonction, il vaudrait mieux parler de déplacement. L'insertion sous entend (classiquement en programmation) qu'on apporte un élément nouveau au tableau.
    La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
    Char Snipeur
    1
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    que veux tu qu'on te réponde ?????
    Tu veux l'exercice tout fait ? à part ça, je ne vois pas car tu ne donnes pas assez d'éléments pour qu'on puisse t'aider.

    En mécanique, tu risques d'avoir à faire avec la programmation très souvent (je suis mécanicien). Un guide : retourne au base, écrit l'algorithme petit à petit, décompose en tâche élémentaires.
    0
  3. lolo
     
    ma fonction insertion fonctionne jusque la tout va bien... c'est ma fontion tri1 qui m'embete : voila mes fonctions :
    T=le tableau de 5 chiffres, ex : T=[8 7 5 2 1]

    function T=insertion (i,j,T)
    if i>j
    x=T(i)
    n=i-1
    while n>0
    T(n+1)=T(n)
    n=n-1
    end
    T(j)=x
    elseif i<j
    K=length(T)
    x=T(i)
    n=i+1
    while n<K
    T(n-1)=T(n)
    n=n+1
    end
    T(j)=x
    end
    end

    function tri1 (i,j,T)
    K=length(T)
    for j=1:K
    y=j
    for i=j:K
    if T(i+1)<T(y)
    y=i+1
    end
    end
    end
    insertion (y,j)
    ans=T
    0