Débutant en C : correction sur le tri bulle

Fermé
havoc31 Messages postés 8 Date d'inscription mercredi 22 octobre 2008 Statut Membre Dernière intervention 2 novembre 2008 - 2 nov. 2008 à 12:38
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 2 nov. 2008 à 13:20
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>

1 réponse

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
2 nov. 2008 à 13:20
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
0