Encore un pb en c svp.......

Signaler
Messages postés
16
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
9 février 2005
-
Messages postés
16
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
9 février 2005
-
j'ai essayer de séparer les fonctions mais ca ne marche pas...

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>


#define MAX 1000000

/************************ tri rapide ****************************/



void init_tab(){


int i,nb,tab[MAX];

srand(time(NULL)); /* Initialisation du générateur aléatoire avec la fontion time */
printf("\n\n Nombre de valeurs a trier (du tableau) : ");
scanf("%d", &nb); /* Demande le nombre d'éléments à trier */
printf("\n");


for(i=0;i<nb;i++)
tab[i]=rand();


printf("Les valeurs avant le tri : ");
for(i=0; i<nb;i++)
printf("\n%d ",tab[i]);
}


void affich_tab(int tab[],int taille) {


int i;


printf("\n\nLes valeurs apres le tri :");
for(i=0; i<taille;i++)
printf("\n%d ",tab[i]);
}


// réordonne le tableau et rend l'indice de séparation
int permutation(int T[], int a, int b) { int i, j, pivot, bi a, bs b, r, TI[b];

// choix du pivot
pivot = T[a];

for(i=a;i <= b;i++) {
if (T[i] < pivot) { TI[bi] = T[i]; bi++; }
if (T[i] > pivot) { TI[bs] = T[i]; bs--; }
}


/* On place le ou les pivots */


for(i=bi;i<=bs;i++) { TI[i] = pivot; }


/* recopie de TI */


for(i=a;i <= b;i++) {
T[i] = TI[i];
if (T[i] == pivot) { r = i; }
}
return r;
}


void rapide(int T[], int a, int b) {

int separe;


if (a < b) {
separe = permutation(T, a, b);
rapide(T, a, separe-1);
rapide(T, separe+1, b);
}
}


void tri_rapide() {


int i,nb,tab[MAX];


init_tab();


rapide(tab, 0, nb-1);


affich_tab(tab,nb);
system("PAUSE");
main();


}



/************************ programme principal ****************************/


int main()
{
/* déclarations */
int choix=0;


printf("\n\n\t\t\t ****************\n");
printf("\t\t\t *MENU PRINCIPAL*\n");
printf("\t\t\t ****************\n\n\n\n");
printf("\t TAPEZ :\n\n\n\n");
printf("\t\t6\t Pour :\t Lancer le prog de tri rapide\n\n");
printf("\t\t7\t Pour :\t Quitter le programme\n\n\n");
printf("\t CHOIX : ");
scanf("%d",&choix);


switch(choix)
{


case 6 : tri_rapide();
break;


case 7 : break;


}


}

7 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
C'est quoi le problème ? ca aiderait un peu
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

moi c'est ton #define MAX 1000000 qui me fais peur. Blague a part tu alloue 4Mo sur la pile dans chaque fontion avec ton int tab[MAX];
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Alors déja tu fais un rand sans inclure la librairie <time.h>

En suite, tu dis à une fonction, d'aller dans la fonction suivante, mais la fonction suivante est déclarée en dessous.
En Sachant que ton compilateur lit ligne par ligne, c'est un peu normal qu'il refuse.

Donc solution, définit des prototypes pour tes fonctions.
Un prototype est le nom de la fonction, le type, et ses arguments placés à la suite de tes includes.

En gros ça donne ca :

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>


#define MAX 1000000


void tri_rapide();
void init_tab();
void affich_tab(int ,int );
int permutation(int , int , int );

Bon j'ose te dire que ton code est crade, mais bon c'est toi qui voit pour sa clarté ;)


void Aurevoir( void ); //Bonne journée
Messages postés
16
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
9 février 2005

je ne comprend rien
Messages postés
16
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
9 février 2005

il plante au moment ou il rentre dans la fonction rapide, comme si il n'avait pas pris en compte le tableau de la fonction init_tab
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Bas, met ton tableau tab en variable globale, ca pourrait aider ...
Messages postés
16
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
9 février 2005

je suis novice, des exemples pourrient m'aider merci...