Probléme dans un programme
lulu
-
Brachior Messages postés 616 Statut Membre -
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.
#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.
A voir également:
- Probléme dans un programme
- Programme demarrage windows - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme - Guide
- Programme word gratuit - Guide
4 réponses
Ca compile sans problème avec Dev-Cpp (toutefois, il faudrait initialiser ton tableau, sous peine de boucle infinie dans ton main() )
J'ai modifié le code, inexplicablement, while(tableau[i]!=0) ne fonctionne pas
(je n'ai changé que le main)
Voici le résultat :
Il semblerait toutefois que ton triabulle ait bel et bien un problème puisque :
Quitte sans warning après l'appui.
(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.