[C++] Programme sur un conteneur set

Fermé
Paddington Brown - 10 janv. 2009 à 14:44
 Paddington Brown - 10 janv. 2009 à 16:12
Bonjour à tous !

Je commence à programmer en C++ (sous Windows, avec DevC++) et j'aurais besoin de votre aide.

J'ai créé un petit programme avec un conteneur Set.
En gros, j'insère des valeurs dans ce conteneur, et je les affiche sur le terminal.

Voici le code source de mon programme.

#include <iostream>
#include <set>

int test(const std::set<int> & pi)
{
    std::set<int>::const_iterator it = pi.begin();
    while(it != pi.end())
    {
             std::cout << *it;
             std::cout << ", ";
             it++;
    }
}

void affichage()
{
     std::set<int> entiers;
     entiers.insert(2);
     entiers.insert(10);
     entiers.insert(18);
     entiers.insert(7);
     entiers.insert(12);
     entiers.insert(35);
     entiers.insert(54);
     entiers.insert(7);
     entiers.insert(2);
     entiers.insert(-3);
     entiers.insert(5);
     entiers.insert(4);
     std::cout << test(entiers) << std::endl;
}

/* Un conteneur set élimine les éléments doublons, et classe les éléments par ordre croissant */

int main()
{
    test();
    system("Pause");
    return 0;
}



Et voici ce que ça donne, lorsque je lance le programme exécutable :

-3, 2, 4, 5, 7, 10, 12, 18, 35, 54, 0
Appuyez sur une touche pour continuer...



Je voudrais simplement savoir comment éliminer le zéro dans la liste.


Merci d'avance. :-)
A voir également:

1 réponse

Je suppose que dans le 'main', la fonction appellée est 'affichage' et non 'test'.
Si tu ne veux pas que le zéro s'affiche, il ne faut pas lui demander de l'afficher!
Donc 'std::cout << test(entiers)' est à supprimer.
N'as-tu pas remarqué que ton compilateur râle un peu? La fonction 'test' est déclarée 'int' et ne retourne... rien! En effet elle n'a rien à retourner, donc la déclarer 'void' et remplacer l'appel tordu 'std::cout << test(entiers)' par 'test(entiers), ce qui donne (j'ai inversé le nom des fonctions car c'est test qui affiche).
#include <iostream>
#include <set>

void affichage (const std::set<int> & pi)
{
    std::set<int>::const_iterator it = pi.begin();
    while(it != pi.end())
    {
             std::cout << *it;
             std::cout << ", ";
             it++;
    }
    std::cout << std::endl;
}

void test()
{
     std::set<int> entiers;
     entiers.insert(2);
     entiers.insert(10);
     entiers.insert(18);
     entiers.insert(7);
     entiers.insert(12);
     entiers.insert(35);
     entiers.insert(54);
     entiers.insert(7);
     entiers.insert(2);
     entiers.insert(-3);
     entiers.insert(5);
     entiers.insert(4);
     affichage(entiers);
}

/* Un conteneur set élimine les éléments doublons, et classe les éléments par ordre croissant */

int main()
{
    test();
    system("Pause");
    return 0;
}
0
Paddington Brown
10 janv. 2009 à 16:12
Bonjour Loupius.

Merci de votre réponse, ça fonctionne à merveille ! :-)

Bonne fin d'après-midi à vous.


Paddington Brown.
0