Programmation fonction tri sous octave

Fermé
lolo - 2 déc. 2010 à 08:38
 Seb - 7 déc. 2010 à 19:47
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.


A voir également:

4 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
Modifié par Char Snipeur le 2/12/2010 à 11:04
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
Modifié par Char Snipeur le 2/12/2010 à 09:46
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
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
Vive les L3GMACS! XD
-1