Tri à bulle e c++

Résolu/Fermé
Martin - 29 oct. 2007 à 20:47
 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

10 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
29 oct. 2007 à 22:25
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
2
merci les gars

                
1
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'
0
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 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à
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
30 oct. 2007 à 09:42
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
0
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
stp je cherche le codes de tri a bulle en francais . le codes sur c++ merci
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
18 mai 2008 à 23:46
Il est sur wikipedia.

Bonne recherche
0
wikipedia donne le code en english . stp je cherche le code en francais merci
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
20 mai 2008 à 00:26
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...
0
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
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
21 mai 2008 à 01:13
} 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
0