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.
Configuration: Windows Vista
Firefox 2.0.0.14

4 réponses

  1. patatosaure
     
    Ca compile sans problème avec Dev-Cpp (toutefois, il faudrait initialiser ton tableau, sous peine de boucle infinie dans ton main() )
    0
  2. lulu
     
    moi avec visual c++ et sous linux sa ne fonctionne pas.
    0
  3. lulu
     
    Au faite si toi sa fonctionne tu pourait m'envoyer in prin écran du résultat stp
    0
  4. 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
    1. Brachior Messages postés 616 Statut Membre 46
       
      penses a retirer les system("PAUSE") si tu veux compiler sous linux ;)
      0