Tri à bulle e c++
Résolu
Martin
-
bigking3100 -
bigking3100 -
Bonsoir,
voilà j'ai fait un programme de tri à bulle
le sujet
l'utilisateur saisit 3 valeurs.
Le programm affiche ces trois valeurs dans l'ordre croissant.
mon programme (j'ai pas mis saisir les 3 valeurs car je voulais tester mon tri à bulle mais ça marche pas)
#include "stdafx.h"
#include <iostream>
using namespace std;
void tribulle(int tableau[],int n);
void afficheliste(int tableau[],int n);
void echange(int tableau[],const int i,const int j);
const int taille=10;
int main()
{
int listeATrier[10]={6,3,0,9,1,7,8,2,5,4};
cout<<"Etat iniail :"<<endl;
afficheListe(listeATrier,taille);
cout<<"Debut de l'algo"<<endl;
tribulle(listeATrier,taille);
cout<<"Fin de l'algo"<<endl;
return(0);
}
void tribulle(int tableau[],int n)
{
int i;
bool inversion;
do
{
inversion=0;
for(i=0,i<n-1;i++)
{
if(tableau[i]>tableau[i+1])
{
echange(tableau,i,i+1);
inversion=1;
}
}
n--;
}
while(inversion);
}
void afficheliste(int tableau[],int n)
{
for(int i=0;i<n;i++)
{
cout<<tableau[i]<<" "<<endl;
}
cout<<endl;
}
void echange(int tableau[],const int i,const int j)
{
int temporaire;
temporaire=tableau[i];
temporaire=tableau[j];
tableau[j]=temporaire;
}
je ne vois pas trop mes erreurs là
si quelu'un pourrait m'aider à comprendre ce problème
merci à ceux qui m'aider
voilà j'ai fait un programme de tri à bulle
le sujet
l'utilisateur saisit 3 valeurs.
Le programm affiche ces trois valeurs dans l'ordre croissant.
mon programme (j'ai pas mis saisir les 3 valeurs car je voulais tester mon tri à bulle mais ça marche pas)
#include "stdafx.h"
#include <iostream>
using namespace std;
void tribulle(int tableau[],int n);
void afficheliste(int tableau[],int n);
void echange(int tableau[],const int i,const int j);
const int taille=10;
int main()
{
int listeATrier[10]={6,3,0,9,1,7,8,2,5,4};
cout<<"Etat iniail :"<<endl;
afficheListe(listeATrier,taille);
cout<<"Debut de l'algo"<<endl;
tribulle(listeATrier,taille);
cout<<"Fin de l'algo"<<endl;
return(0);
}
void tribulle(int tableau[],int n)
{
int i;
bool inversion;
do
{
inversion=0;
for(i=0,i<n-1;i++)
{
if(tableau[i]>tableau[i+1])
{
echange(tableau,i,i+1);
inversion=1;
}
}
n--;
}
while(inversion);
}
void afficheliste(int tableau[],int n)
{
for(int i=0;i<n;i++)
{
cout<<tableau[i]<<" "<<endl;
}
cout<<endl;
}
void echange(int tableau[],const int i,const int j)
{
int temporaire;
temporaire=tableau[i];
temporaire=tableau[j];
tableau[j]=temporaire;
}
je ne vois pas trop mes erreurs là
si quelu'un pourrait m'aider à comprendre ce problème
merci à ceux qui m'aider
A voir également:
- Tri bulle c
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Video bulle whatsapp - Accueil - Messagerie instantanée
- Whatsapp couleur bulle - Accueil - Messagerie instantanée
- Info bulle excel ✓ - Forum Excel
10 réponses
Martin
Pourtant c'est écrit en toute lettre quand tu compiles :
- C'est afficheliste (pas afficheListe)
- Dans ton for (ligne 35) tu as mis une virgule au lieu du point virgule
Quelques recommandations :
- compile avec les options de warning (-W -Wall pour g++)
- évite d'utiliser des headers non standard (par exemple #include "stdafx.h" )
- évite d'utiliser l'instruction "using namespace std;". Si dans un fichier source (.cpp) c'est indolore il ne faut pas l'utiliser dans un header (.hpp). En effet le namespace std:: sert à éviter les conflits entre les classes de la STL et les classes que tu peux éventuellement utiliser par ailleurs.
marwa
La fonction main est toujours sensée retournée un int (code d'exécution). Par convention si tout s'est bien passé le main retourne 0 (ou EXIT_SUCCESS), sino nil retourne un code d'erreur (valeur non nulle). main peut éventuellement prendre des paramètres (traditionnellement notés argc et argv) quand le programme est lancé avec des paramètres. Exemple :
Donne à l'exécution (ici l'executable s'appelle plop.exe) :
Bonne chance
Pourtant c'est écrit en toute lettre quand tu compiles :
plop.cpp: In function ‘int main()’: plop.cpp:17: error: ‘afficheListe’ was not declared in this scope plop.cpp: In function ‘void tribulle(int*, int)’: plop.cpp:35: warning: right-hand operand of comma has no effect plop.cpp:35: error: expected `;' before ‘)’ token
- C'est afficheliste (pas afficheListe)
- Dans ton for (ligne 35) tu as mis une virgule au lieu du point virgule
Quelques recommandations :
- compile avec les options de warning (-W -Wall pour g++)
- évite d'utiliser des headers non standard (par exemple #include "stdafx.h" )
- évite d'utiliser l'instruction "using namespace std;". Si dans un fichier source (.cpp) c'est indolore il ne faut pas l'utiliser dans un header (.hpp). En effet le namespace std:: sert à éviter les conflits entre les classes de la STL et les classes que tu peux éventuellement utiliser par ailleurs.
marwa
La fonction main est toujours sensée retournée un int (code d'exécution). Par convention si tout s'est bien passé le main retourne 0 (ou EXIT_SUCCESS), sino nil retourne un code d'erreur (valeur non nulle). main peut éventuellement prendre des paramètres (traditionnellement notés argc et argv) quand le programme est lancé avec des paramètres. Exemple :
#include <iostream> int main(int argc,char **argv){ for(int i=0;i<argc;++i){ std::cout << i << '\t' << argv[i] << std::endl; } return 0; }
Donne à l'exécution (ici l'executable s'appelle plop.exe) :
(mando@aldur) (~) $ ./plop.exe plop tapir miam 0 ./a.out 1 plop 2 tapir 3 miam
Bonne chance
Bonjour,
je suis une débutante programmeuse en c; et j n'ai pas compris pourquoi on utilise la fonction int main au lieux de main ou void main;
aidez-moi s'il vous plait j'
je suis une débutante programmeuse en c; et j n'ai pas compris pourquoi on utilise la fonction int main au lieux de main ou void main;
aidez-moi s'il vous plait j'
Merci mamiemando pour ton aide
voilà j'ai changer mes erreurs après quand je compile (sans tes recommandations pour voir)
et il me met ça
tribulle.obj : error LNK2028: jeton non résolu (0A002B0) "void __cdecl tribulle(int * comst,int)" (?tribulle@@$$FYAXQHH@Z) réference dans la fonction "int __cdecl main (void)" (?main@@$$HYAHXZ)
tribulle.obj : error LNK2019: symbole externe non résolu "void __cdecl tribulle(int * comst,int)" (?tribulle@@$$FYAXQHH@Z) réference dans la fonction "int __cdecl main (void)" (?main@@$$HYAHXZ)
ça veut dire quoi ça ???
que mon tribulle ne va pas avec la fonction main(void) ???
pas tous compris là
voilà j'ai changer mes erreurs après quand je compile (sans tes recommandations pour voir)
et il me met ça
tribulle.obj : error LNK2028: jeton non résolu (0A002B0) "void __cdecl tribulle(int * comst,int)" (?tribulle@@$$FYAXQHH@Z) réference dans la fonction "int __cdecl main (void)" (?main@@$$HYAHXZ)
tribulle.obj : error LNK2019: symbole externe non résolu "void __cdecl tribulle(int * comst,int)" (?tribulle@@$$FYAXQHH@Z) réference dans la fonction "int __cdecl main (void)" (?main@@$$HYAHXZ)
ça veut dire quoi ça ???
que mon tribulle ne va pas avec la fonction main(void) ???
pas tous compris là
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ca veut dire que tu utilises une fonction tribulle qui n'est pas définie. Typiquement les majuscules et minuscules ont une importance dans le nom des symboles (variables fonctions types...).
Tu peux aussi utiliser un compilateur basé sur gcc qui te renverra des vrai message d'erreur (par exemple dev cpp).
http://www.bloodshed.net/
Pour les problèmes de compilation, prend le réflexe de donner ton code source car à part traduire le message d'erreur on ne pourra jamais te dire plus. De manière générale quand tu vas sur un forum, si tu veux qu'on te dise précisément ce qui cloche il faut donner le source.
Bonne chance
Tu peux aussi utiliser un compilateur basé sur gcc qui te renverra des vrai message d'erreur (par exemple dev cpp).
http://www.bloodshed.net/
Pour les problèmes de compilation, prend le réflexe de donner ton code source car à part traduire le message d'erreur on ne pourra jamais te dire plus. De manière générale quand tu vas sur un forum, si tu veux qu'on te dise précisément ce qui cloche il faut donner le source.
Bonne chance
J'ai trouvé mon erreur j'avais dans le "void tribulle" un "l" en trop c'est pour qu'il ne trouver pas
je l'ai testé la ça marche mais j'ai pas mon tableau (mince)
ça affiche ça
Etat initial :
6
3
0
9
1
7
8
2
5
4
Debut de l'algo
Fin de l'aglo
aie il me manque mon tableau qui trie, je fais regarde ça
merci pour ton aide mamiemando
je l'ai testé la ça marche mais j'ai pas mon tableau (mince)
ça affiche ça
Etat initial :
6
3
0
9
1
7
8
2
5
4
Debut de l'algo
Fin de l'aglo
aie il me manque mon tableau qui trie, je fais regarde ça
merci pour ton aide mamiemando
Ca c'est en anglais pour toi ? Avec les commentaires en français ? Pour moi c'est écirt en pascal, php, java, C, C++
https://fr.wikipedia.org/wiki/Tri_%C3%A0_bulles
Je vois ce que tu peux demander de plus. Si c'est un pseudo code que tu veux, je pense que c'est un très bon exercice de faire la transcription. Après tout il faut bien qu'il te reste quelque chose à faire...
https://fr.wikipedia.org/wiki/Tri_%C3%A0_bulles
Je vois ce que tu peux demander de plus. Si c'est un pseudo code que tu veux, je pense que c'est un très bon exercice de faire la transcription. Après tout il faut bien qu'il te reste quelque chose à faire...