Probléme dans un programme

lulu -  
Brachior Messages postés 616 Statut Membre -
Bonjour,a tous je n'arrive pas a résoudre le probléme du programme suivant.

#include <stdio.h>
#include <stdlib.h>



void tri_a_bulles(long *pt1, long *pt2, int i);

int main(void)
{
int i=0, j=0;
long tableau[50];

printf("Remplir le tableaux/n");
scanf("/n%ld", &tableau[i]);


printf("Remplir le tableaux/n");

while(tableau[i] != 0);
{
i++;

scanf("/n%ld", &tableau[i]);
}


tri_a_bulles(&tableau[0],&tableau[1],i);

while(j != i+1)//permet d'afficher notre tableau trié
{
printf("\n%ld", tableau[j]);
j++;
}

return 0;
}



void tri_a_bulles(long *pt1, long *pt2, int i)
{
int premier, deuxieme, a, b, test, val;

long *pointe1 = NULL;
pointe1 = pt1;

long *pointe2 = NULL;
pointe2 = pt2;

do

{
premier = 0;
test = 1;
deuxieme = 0;
a = 0;
b = 0;
pointe1=pt1;
pointe2=pt2;

while(premier <= i-1)
{
if(*pt1 >= *pt2)
{
val = *pt1;
*pt1 = *pt2;
*pt2 = val;
a++;
}
pt1 = pt1+2, pt2 = pt2+2, premier = premier+2;
}



pt1++, pt2++;

while(deuxieme <= i-2)
{
if(*pt1 >= *pt2)
{
val = *pt1;
*pt1 = *pt2;
*pt2 = val;
b++;
}
pt1 = pt1+2, pt2 = pt2+2, deuxieme = deuxieme+2;
}
}while((a+b) != 0);
}


voici le message d'erreur:
1>c:\users\damien\documents\visual studio 2005\projects\programme-c\programme-c\decalage.c(47) : error C2143: erreur de syntaxe : absence de ';' avant 'type'
1>c:\users\damien\documents\visual studio 2005\projects\programme-c\programme-c\decalage.c(48) : error C2065: 'pointe2' : identificateur non déclaré
1>c:\users\damien\documents\visual studio 2005\projects\programme-c\programme-c\decalage.c(48) : warning C4047: '=' : 'int' diffère de 'long *' dans les niveaux d'indirection
1>c:\users\damien\documents\visual studio 2005\projects\programme-c\programme-c\decalage.c(59) : warning C4047: '=' : 'int' diffère de 'long *' dans les niveaux d'indirection

je ne vois pas à quoi sa correspond merci d'avance pour votre aide.

4 réponses

patatosaure
 
Ca compile sans problème avec Dev-Cpp (toutefois, il faudrait initialiser ton tableau, sous peine de boucle infinie dans ton main() )
0
lulu
 
moi avec visual c++ et sous linux sa ne fonctionne pas.
0
lulu
 
Au faite si toi sa fonctionne tu pourait m'envoyer in prin écran du résultat stp
0
patatosaure
 
J'ai modifié le code, inexplicablement, while(tableau[i]!=0) ne fonctionne pas

(je n'ai changé que le main)
int main(void) 
{ 
int i=0, j=0; 
long tableau[50]; 

printf("Remplir le tableaux\n"); 
scanf("%ld", &tableau[i]); 

printf("Remplir le tableaux\n");
if(tableau[i] != 0)
 printf ("controle 0 : tableau[i]!=0 \n");
do
{ 
printf("controle 1 : tableau[%d]!=0 \n",i);
i++; 
scanf("\n %ld", &tableau[i]); 
}
while(tableau[i] != 0);
system("PAUSE");

tri_a_bulles(&tableau[0],&tableau[1],i); 
system("PAUSE");
while(j != i+1)//permet d'afficher notre tableau trié 
{ 
printf("\n%ld", tableau[j]); 
system("PAUSE");
j++; 
} 

printf("\n");
system("PAUSE");
return 0; 
}  



Voici le résultat :
Remplir le tableaux
5
Remplir le tableaux
controle 0 : tableau[i]!=0
controle 1 : tableau[0]!=0
1
controle 1 : tableau[1]!=0
5
controle 1 : tableau[2]!=0
0
Appuyez sur une touche pour continuer...
Appuyez sur une touche pour continuer...

1Appuyez sur une touche pour continuer...

5Appuyez sur une touche pour continuer...

0Appuyez sur une touche pour continuer...

5Appuyez sur une touche pour continuer...

Appuyez sur une touche pour continuer...



Il semblerait toutefois que ton triabulle ait bel et bien un problème puisque :
Remplir le tableaux
4
Remplir le tableaux
controle 0 : tableau[i]!=0
controle 1 : tableau[0]!=0
5
controle 1 : tableau[1]!=0
4
controle 1 : tableau[2]!=0
12
controle 1 : tableau[3]!=0
0
Appuyez sur une touche pour continuer...


Quitte sans warning après l'appui.
0
Brachior Messages postés 616 Statut Membre 46
 
penses a retirer les system("PAUSE") si tu veux compiler sous linux ;)
0