Rechercher : dans
Par :

Débutant en C : correction sur le tri bulle

Dernière réponse le 2 nov 2008 à 13:20:53 havoc31, le 2 nov 2008 à 12:38:37 
 Signaler ce message aux modérateurs

Bonjour,

Je créer un programme de tri bulle mais là ou je bloque c'est au niveau du sous programme de tri (la permutation des 2 nombres)

voici le code 

#include <stdio.h>

// saisir la taille du tableau et rentrer les valeur dans un tableau
void val_tab (int i, int tab[])
{
int longueur;
 
   printf("Choisir le nombre de valeur du tableau : ");
   scanf("%d",&longueur);
   if (longueur > 50) longueur = 50;

   for(i=0 ; i<longueur ; ++i)
   {
      printf("Rentrer la valeur %d : ",i + 1);
      scanf("%d",&tab[i]);
   }
}


// affichage du tableau

void tab_saisi (int tab[], int i)
{
int longueur;

   printf("\nTableau saisi : \n");
   for(i=0 ; i<longueur ; i++)
      printf("%d \n",tab[i]);
}

// permutation

int trie (int tab[j], int tab[longueur], int *a, int *b)
{
int s, j;
for (j=0; j>longueur; j++)
if (tab[j]<tab[j+1])
	{
	 s=*a;
	*a=*b;
	*b=s;
	}
}

//affichage du tableau trie

void tab_trie (int i, int tab[])
{
int longueur;
   printf("\nTableau trie : \n");
   for(i=0 ; i<longueur ; i++)
      printf("%d \n",tab[i]);

}


int main(void)
{
   int tab[50];
   int longueur;
   int i, a, b;

   printf("programme de tri bulle\n");
   

   val_tab (i, tab);
   tab_saisi (tab, i);
   trie ();
   tab_trie (i, tab);


  
   system("pause");
   return 0;
}



je me perd un peu dans mes déclarations je pense... si quelqu'un peut m'aidé a corrigé les erreurs bêtes...et si possible m'expliquer ce serait gentil.
le programme fonctionne mais bug au niveau du sous programme de trie.

Merci d'avance pour les futurs réponses.<code>
</code>
Configuration: Windows XP
Firefox 3.0.3

Meilleures réponses pour « débutant en C : correction sur le tri bulle » dans :
Tri à bulles -récursivité- VoirVoici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri à bulles : Procedure Tri_bulles (var t : TAB; n : integer); Var i, aux : integer; Function Trier (t : TAB; n : integer) : Boolean; ...
Pascal - Tri par insertion - Récursivité- VoirVoici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri par insertion : Procedure Tri_Ins (Var t: TAB; n: integer); Var aux,i : integer; begin If n > 1 Then begin ...
Les tableaux en langage C++ VoirType de données complexes Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes...

1

 lami20j, le 2 nov 2008 à 13:20:53

Salut,

Par exemple la fonction

int trie (int tab[j], int tab[longueur], int *a, int *b)
{
int s, j;
for (j=0; j>longueur; j++)
if (tab[j]<tab[j+1])
        {
         s=*a;
        *a=*b;
        *b=s;
        }
}
Tout d'abord elle doit renvoyer un int et il n'y a pas de return dans ta fonction.
Ensuite tu mets en paramétrés int tab[j] et int tab[longueur]. Tout peut passer un tableau en paramétre de la manière int *tab ou int tab[] en revanche si tu veux passer en paramètre juste un int qui sera une valeur contenu dans un tableau il suffit d'écrire int N1 par exemple. Mais je ne pense pas que c'est ça que tu veux.

Ensuite je vois dans main que tu appelles la fonction sans lui passer des arguments trie();
Ce n'est pas correcte.

Voici un exemple pour t'inspirer http://www.commentcamarche.net/forum/affich 4795788 c tri#2 106485010510997108

Répondre à lami20j