Toon posts:

[C++] array sorteren

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb 2 arrays gemaakt 1 array van 26 karakters en 1 met 26 cijfers.

nu wil ik deze beide sorteren zoals bijv:

array 1 bevat de letters van het alfabet
array 2 bevat hoevaak de letter voorkomt in een zin

hoe krijg ik het dan zo dat hij array 2 sorteerd van hoogste naar laagste en array 1 mee sorteerd zodat als in array 1 de letter a op array[7] staat het aantal maal dat letter a is voorgekomen in een zin in array 2 ook op array[7] staat ook na het sorteren

:)

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
als je die sorteerfunctie zelf geschreven hebt is het heel makkelijk te doen, maar aangezien je de vraag stelt neem ik aan dat je een standaardfunctie ofzo gebruikt? dan moet je daar wat meer informatie over geven.

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Prop de 2 variabelen in 1 class en overload de < en == operator (of > en ==, vergeet het altijd)
dus bv
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class AlphaCount
{
public:
   char Character;
   int  Count;
   bool operator<(const AlphaCount &X)
   {
    return Count < X.Count;
   }
   bool operator==(const AlphaCount &X)
   {
    return X.Count == Count;
   }
};

nu kan je met een standaard sort methode de objecten sorteren.
code:
1
2
3
4
5
#include <vector>
#include <algorithm>
std::vector<AlphaCount> Letters;
// ... vul Letters met waardes
std::sort(Letters.begin(), Letters.end());

(non tested ofcourse, but u get the idea ;))

Verwijderd

Topicstarter
nou ik had het eerst geprobeert met shell sort en dan gewoon array 1 laten meeveranderen maar hij liet een paar letters weg en sorteerde maar een klein stukje dus heb ik dat maar weer gedelete. het is eigenlijk een heel proggie waar dat het laatste is wat ik nog moet (proggie is wat groot om te posten anders deed ik het wel) maar ik krijg het niet fatsoenlijk aan het lopen (dat sorteren dan).

Dat met die vectors snap ik ook niet helemaal Die classes snap ik wel alleen dat 2e niet. |:(

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
Met het eerste stukje maakt je een klasse met vergelijkings operatoren. Deze heeft het std::sort algoritme nodig om te sorteren, en daarmee bepaal jij dus hoe er gesorteerd wordt.

Met het tweede stukje wordt een std::vector gemaakt, van het type van de pas gemaakte klasse. (Mbv templates, zie een van de vele tutorials op het web)

Het kan volgens mij ook gewoon met een array van jouw objecten. Zo dus:
code:
1
2
3
AlphaCount Letters[100];
// ... vul Letters met waardes
std::sort(&Letters[0], &Letters[100]);

Die std::vector.begin() en std::vector.end() zijn eigenlijk (niet echt) pointers naar het eerste en '1 na het einde' element van de vector. ( vergelijk met &Letters[0] en &Letters[100] dus)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.