Avatar billede lasse37 Nybegynder
07. august 2002 - 22:45 Der er 10 kommentarer og
1 løsning

Sortering

Hej,

Kan det lade sig gøre at sotere en liste med flere variabler i?? jeg har en liste "list<Saelgere> som indeholder to strings og en float.. Jeg vil gerne kunne sotere på floaten..
Avatar billede chries Nybegynder
08. august 2002 - 08:16 #1
du overloader < operatoren i din seagler klasse og returner right.floatattrib < left.floatattrib. derefter kan du bruge sort functionen på listen.

void sort();
Sorts the list elements in ascending order. The comparison operator < ("less than") must be defined for the list element type. Note that the STL sort algorithm does NOT work for lists; that's why a sort member function is supplied.
  nums.sort();
Avatar billede chries Nybegynder
08. august 2002 - 08:17 #2
hvis den sorter forkert (større -> mindre) , byt om på
right.floatattrib < left.floatattrib
Avatar billede lasse37 Nybegynder
08. august 2002 - 13:19 #3
Hvordan skal funktionen se ud?? Jeg kan godt hæve pointene hvis du vil...

Min objekt ser således ud...

class BedsteSaelger {

  public:
  BedsteSaelger();
  BedsteSaelger(float SS,string MN,string MAN)
    {SamletSalg=SS,MedarbejderNr=MN, MedarbejderNavn=MAN;}

  const float Hent_samlet_salg()const{return SamletSalg;}
  const string Hent_MedarbejderNavn()const{return MedarbejderNavn;}
  const string Hent_MedarbejderNr()const{return MedarbejderNr;}


  //Retunere de 5 bedste sælgeres ID nr...
  void Find_bedste_saelgere(String);
  void SaetMedarbejderAtributter(String);
  private:
  float SamletSalg;
  string MedarbejderNr;
  string MedarbejderNavn;
 


  };
Avatar billede chries Nybegynder
08. august 2002 - 13:36 #4
prøv at tilføje den linie i klasse difinitionen:
  static bool operator< (BedsteSaelger & left, const BedsteSaelger & right) { return (left.SamletSalg<right.SamletSalg); }
Avatar billede chries Nybegynder
08. august 2002 - 13:37 #5
og så kalde sort på din:
list<BedsteSaelger>
Avatar billede lasse37 Nybegynder
08. august 2002 - 15:49 #6
Okay jeg tester lige det det...

Lige et side spørgsmål..
Jeg forsøger at få adgang til en metode i et andet objekt gennem min pointer..

Således:

bool HentAnnonce(String); Denne prøver jeg at hente..

bool Hent_annonce(Pointer->HentAnnonce(String)) {} Med denne.. Den vil ikke acceptere den... Hvad gør jeg forkert??

Har sat pointene op...
Avatar billede chries Nybegynder
08. august 2002 - 15:56 #7
bool HentAnnonce(String); <- tager string som parameter

bool Hent_annonce(Pointer->HentAnnonce(String)) {} <- her kalder du den med string ?

hvis det er funktionen, skal den se sådan ud:
bool Hent_annonce(String param)
{
}

(forudsat det er c/c++)
Avatar billede lasse37 Nybegynder
08. august 2002 - 18:01 #8
Den melder denne fejl...

Only ordinary member functions and the operators new and delete can be declared static.

Constructors, destructors and other operators must not be static.

MHT at hente en metode fra et andet objekt kan jeg heller ikke blive klog på.. Jeg kan godt hente data fra et andet objekt således..

int hentannoncenr(){return Pointer->HentAnnoncenr();}

Men hvordan sætter man data i et andet objekt gennem pointeren...??
Avatar billede chries Nybegynder
09. august 2002 - 10:36 #9
Hvilken compiler er det lige du bruger der ?
Avatar billede lasse37 Nybegynder
09. august 2002 - 18:53 #10
Jeg benytter Borland builder 5 (c++)

Skal den funktion ikke være en friend af klassen???
Avatar billede lasse37 Nybegynder
10. august 2002 - 01:02 #11
Det skulle bare være en friend af klassen... Du får pointene min ven...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester