[c++] sorteren van getallen

Pagina: 1
Acties:
  • 214 views sinds 30-01-2008
  • Reageer

  • Zym0tiC
  • Registratie: Februari 2001
  • Laatst online: 16:05
ik heb in een programma 26 variabelen a t/m z die dus alle letters tellen in een zin. maar nu moeten de 5 meest voorkomende letters afgedrukt worden op het scherm van hoog naar laag. ik heb van alles wat gebrobeerd maar het werkt inet echt hoe ik ut wil

iemand id's

There is no such thing as innocence, only degrees of guilt | Flickr!


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

zoek eens bubblesort, mergesort, insertion sort of quicksort :)

  • drZymo
  • Registratie: Augustus 2000
  • Laatst online: 09-08 22:22
uit MSDN
void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );

Parameters

base

Start of target array

num

Array size in elements

width

Element size in bytes

compare

Comparison function

elem1

Pointer to the key for the search

elem2

Pointer to the array element to be compared with the key

Remarks

The qsort function implements a quick-sort algorithm to sort an array of num elements, each of width bytes. The argument base is a pointer to the base of the array to be sorted. qsort overwrites this array with the sorted elements. The argument compare is a pointer to a user-supplied routine that compares two array elements and returns a value specifying their relationship. qsort calls the compare routine one or more times during the sort, passing pointers to two array elements on each call:

compare( (void * D elem1, (void * D elem2 );

The routine must compare the elements, then return one of the following values:

Return Value Description
< 0 elem1 less than elem2
0 elem1 equivalent to elem2
> 0 elem1 greater than elem2


The array is sorted in increasing order, as defined by the comparison function. To sort an array in decreasing order, reverse the sense of greater than and less than in the comparison function.
goed genoeg?? >:)

"There are three stages in scientific discovery: first, people deny that it is true; then they deny that it is important; finally they credit the wrong person."


  • Zym0tiC
  • Registratie: Februari 2001
  • Laatst online: 16:05
Op zondag 18 november 2001 13:14 schreef drZymo het volgende:
uit MSDN
[..]

goed genoeg?? >:)
het is wel geen array waar ze in staan maar gewoon los
maar ik zal eens wat proberen

There is no such thing as innocence, only degrees of guilt | Flickr!


Verwijderd

Ik krijg het idee dat je 26 integers hebt gedeclareerd. Da's nie zo'n goed idee. Je moet een array (zoek maar op) van integers declareren, dan kun je de sorteer algoritmes gebruiken die hierboven staan.

  • Zym0tiC
  • Registratie: Februari 2001
  • Laatst online: 16:05
Op zondag 18 november 2001 13:16 schreef Xalista het volgende:
Ik krijg het idee dat je 26 integers hebt gedeclareerd. Da's nie zo'n goed idee. Je moet een array (zoek maar op) van integers declareren, dan kun je de sorteer algoritmes gebruiken die hierboven staan.
k ga ik gelijk doen

There is no such thing as innocence, only degrees of guilt | Flickr!


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 23:11
Op zondag 18 november 2001 13:14 schreef drZymo het volgende:
uit MSDN
[..]

goed genoeg?? >:)
Nee. :(
Is C, geen C++.

C++ heeft gewoon std::sort, hoef je niet zulke
ingewikkelde dingen te vertellen.

Bovendien weet je nog niet wat voor datastructuur
hij gebruikt; leuk dat je weet dat de meest voorkomende
letter 80 keer voorkomt, maar welke is dat?

Maar in C++ kun je een zelfsorterende datastructuur
gebruiken: std::map / std::multimap.
Key waarop je moet sorteren is frequentie( int ),
symbol is char, en keys kunnen vaker voorkomen.
( 2 letters met zelfde frequentie ) ->

std::multimap< int, char > tabel;
tabel.insert( std::make_pair (
aantal_as, 'a' ) );
// kweenie waar je de aantallen bewaart

Hoogste aantal is nu tabel.end()->first, bijbehorende
karakter is tabel.end()->second. Eennahoogste is
tabel.end()-1 etc.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Op maandag 19 november 2001 14:04 schreef MSalters het volgende:
Nee. :(
Is C, geen C++.

C++ heeft gewoon std::sort, hoef je niet zulke
ingewikkelde dingen te vertellen.
Mooi, iemand anders merkt het onvermijdbare op :)
Hoogste aantal is nu tabel.end()->first, bijbehorende
karakter is tabel.end()->second. Eennahoogste is
tabel.end()-1 etc.
BOEM! segmentation dinges en zo. Je bedoelt natuurlijk tabel.back().first. tabel.end() is een past-end iterator (een voorbij het laatste element).
Pagina: 1