Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Postleitzahlen sortieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.11.2005, 18:00 Uhr
~gustl
Gast


Hi Leute,

Hab ein Problem. Würde gerne Postleitzahlen sortieren.
Bsp: Eingabe: 2000, 2001, 1000, 999
Ausgabe sortiert: 999, 1000, 2001, 2000

Bei mir gehts nicht:

typedef struct{
int plz;
}p;

.
.
.
//Hauptprogramm
.
.
.

int plz=0;

for(i=0;i<=4;i++){
if(p[i].plz>p[i+1].plz){
plz=p[i].plz;
p[i].plz=p[i+1].plz;
p[i+1].plz=plz;

helft mir bitte

Danke!

Mfg. gustl
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.11.2005, 18:21 Uhr
Gap



Dein Sortieren ist falsch.


C++:
typedef struct{
int plz;
}p;

int main()
{
const int MAX_PLZ = 5; // Anzahl der Postleitzahlen
bool anything_swapped;
do
{
  anything_swapped = false;
  for(i=0;i<MAX_PLZ-1;i++)
  {
   if(p[i].plz>p[i+1].plz)
   {
    anything_swapped = true;
    const int temp = p[i].plz;
    p[i].plz = p[i+1].plz;
    p[i+1].plz = temp;
   }
  }
}while( anything_swapped );
}


Dieser Post wurde am 22.11.2005 um 18:22 Uhr von Gap editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.11.2005, 18:28 Uhr
~gustl
Gast


und wenn p[i].plz<p[i+1].plz ist wie geht es dann
+Mfg. gustl
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.11.2005, 12:21 Uhr
Sponge



Du kannst auch einfach qsort machen.. also den vorgefertigten Quicksort

Dazu brauchst du allerdings eine vergleichsfunktion, z.B.


Code:
int __cdecl vergleichePLZ(void * P1, void * P2) {
     return P1->plz < P2->plz ? 1 : P1->plz > P2->plz ? -1 : 0;
}



das __cdecl kannst du weglassen, wenn du keine besonderen Compileroptionen verwendest, die stdcall verwenden

So und um nu zu sortieren, rufst du an geeigneter Stelle die Sortierfunktion auf...


Code:
qsort(p,4,sizeof(p),vergleiche);



p ist dabei die Wurzeladresse deines Arrays, 4 die Anzahl der Elemente in dem Array, darauf folgt die Größe der Struktur (der Elemente die du sortierst) und darauf ein Funktionpointer für die Vergleichsfunktion

Wenn Fragen, dann fragen...
--
Es gibt 10 Arten von Leuten:
die, die das binäre System verstanden haben,
und die, die es nicht verstanden haben ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: