2010-05-16 3 views
1

J'essaye d'utiliser sho pour montrer la sortie d'une autre fonction. La première fonction a été utilisée pour faire le tri, et a renvoyé une liste.Comment produire une sortie en utilisant la fonction show

maintenant je veux faire une fonction qui utilise show() pour afficher la sortie. C'est ainsi que je l'ai essayé seulement pour obtenir une erreur.

Son pour afficher les résultats de deux les deux listes triées qui ont utilisé cette fonction.

//Function that does the compare! 

    map<int, Bid*> Auctioneer::compareBidList(map<int, Bid*>& one, map<int, Bid*>& 
        two) // pass references & 
    { 
    map<int, Bid*> Sorted; 
     map<int, Bid*>::iterator iterOne; 
    for(iterOne = one.begin(); iterOne != one.end(); ++iterOne) 
{ 
    if(iterOne->second->bidType == 'A') // select all type A from one 
    { 
     map<int, Bid*>::iterator iterTwo; 
     for(iterTwo = two.begin(); iterTwo != two.end(); ++iterTwo) 
     { 
      if(iterTwo->second->bidType == 'B') // select all 
     type B from two 
      { 
       if(iterOne->second->price < iterTwo->second- 
          >price) // select on price between type A and type B 
       { 
        Sorted.insert(*iterOne); 
        Sorted.insert(*iterTwo); 
       } 
      } 
     } 
    } 
    }     
    return Sorted; 
    } 

void show(map<int, Bid*>& one, map<int, Bid*>& two) { 
    map<int, Bid*>::iterator iterOne; 
    map<int, Bid*>::iterator iterTwo; 
    cout << "-----------------The sorted List-------------------------";  
    for(iterOne=Sorted.begin(); iterOne!= Sorted.end(); iterOne++){ 
    cout << iterOne->second->toString() << endl<<"\n";} 
    for(iterTwo=Sorted.begin(); iterTwo!= Sorted.end(); iterTwo){ 
    cout << iterTwo->second->toString() << endl<<"\n";} 
    } 

void show(const char *msg, map<int, Bid*>& Sorted) { 
     cout << msg << endl; 
     show(Sorted); 
     } 
void compare(map<int, Bid*>& sellers, map<int, Bid*>& buyers) { 
    compare(sellers.begin(), sellers.end(), 
    buyers.begin(),buyers.end(),compareBidList); } 

//my call in the main after declaration was as follows 
    map<int, Bid*> buyers, sellers; 
    auctioneer.compare(sellers,buyers); 
    show("Bids after sorting:", sellers); 
    show(buyers); 
+1

On va avoir besoin d'un peu plus que cela. Que devrait-on "faire"? Imprimer sur une console, afficher une fenêtre, écrire dans un navigateur, lancer un avion de skywriting? –

+4

Lorsque vous obtenez une erreur, vous devez nous dire quelle est l'erreur. –

Répondre

0

Retirez la parenthèse supplémentaire et appeler spectacle deux fois (votre déclaration ne prend qu'un seul objet de la carte):

show("Bids after sorting:", sellers); 
show(buyers); 
+0

Il n'y a aussi aucune fonction définie (que je peux voir) qui prend deux 'map', et il n'y a aucune fonction définie qui prend une' map' et rien d'autre ... ces deux fonctions devront être définies pour que tout fonctionne réellement ... –

+0

@codeka: La fonction show prenant deux arguments imprime un message et délègue à une seule fonction show show, que j'ai supposé avoir été définie ailleurs. –

+0

Ouais, c'est le "défini ailleurs" qui m'inquiétait. Cela semble être important (trop important pour le laisser de côté?) ... Je suppose que lorsque nous verrons les erreurs réelles, nous le saurons à coup sûr :) –

Questions connexes