Tri à bulle e c++ [Résolu/Fermé]

- - Dernière réponse :  bigking3100 - 23 avril 2012 à 15:50
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
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
28993
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2019
6642
2
Merci
Martin

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

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59788 internautes nous ont dit merci ce mois-ci

1
Merci
merci les gars
0
Merci
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'
on met void quand on renvoie rien ( pas de return ) sauf qu'on main on renvoie 0 alors que 0 est un entier c'est pk on met int
0
Merci
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à
Messages postés
28993
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2019
6642
0
Merci
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/devcpp.html

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
0
Merci
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
0
Merci
stp je cherche le codes de tri a bulle en francais . le codes sur c++ merci
Messages postés
28993
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2019
6642
0
Merci
Il est sur wikipedia.

Bonne recherche
wikipedia donne le code en english . stp je cherche le code en francais merci
Messages postés
28993
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2019
6642
0
Merci
Ca c'est en anglais pour toi ? Avec les commentaires en français ? Pour moi c'est écirt en pascal, php, java, C, C++
http://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...
moi je suis débutant . je sais pas comment faire pour transcription . c est quoi ca } et while et if . stp envoiye a moi le code en francais . stp mamiemando .ok merci
Messages postés
28993
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2019
6642
0
Merci
} c'est l'équivalent d'une fin de bloc (fin si, fin pour etc...)
while c'est "tant que"
if c'est "si"
en fait il suffit d'utiliser un dictionnaire franco anglais.

Bonne chance