hat super funktioniert...danke
aber hab noch ein prob.
will jetzt Key[] sortieren lassen...mit Quicksort.
aber sobald ich eine zweite zahl eingebe hört er gar nich mehr auf zu rechnen.
hab schon verschiedene suchverfahren ausprobiert...alle nur mit mäßigem erfolg.
durch das sortieren soll er dann die Elemente der größe nachausgeben, anhand der Keys.
#include<iostream.h>
#include <stdlib.h>
int Anzahl = 0;
int Element[1024];
int Key[1024];
int Bitmaske[1024]={NULL};
int Sortkey[1024];
int i,x,Position,Wert;
int Startkey = -1;
int count =0;
void main()
{
void QuickSort(int *A, int iLo, int iHi, int &cnt); // <---HIER
char index;
int Hinzufuegen(int x);
do
{
system("cls");
cout <<("\n\nAuswahlmenue:");
cout <<("\n****************");
cout <<("\n1. Alle Elemente anzeigen lassen");
cout <<("\n2. Element hinzufuegen");
cout <<("\n3. Element loeschen");
cout <<("\n4. Programm beenden\n");
cin >>index;
QuickSort(Key, -1, Anzahl,count); // <---HIER
switch(index) // Auswahlfkt. der Funktionen des Programms
{
case '1': // Anzeigefunktion
{
if (Anzahl==0)
{
cout << "Keine Elemente vorhanden.";
break;
}
Wert = Anzahl; //von anzahl des arrays eins abziehen, da ich 0 [0] nicht nutze
cout <<("\n\nAlle Elemente:");
cout << "\nElemente: ";
for(i=0;i<Wert;i++)
cout << Element[i] << ",";
cout << "\nKey: ";
for(i=0;i<Wert;i++)
cout << Key[i] << ",";
cout << "\nBitmaske: ";
for(i=0;i<Wert;i++)
cout << Bitmaske[i] << ",";
cout << "\nAnzahl: " << Anzahl; //die ganzen cout nur zum testen, damit ich die werte sehe
cout << "\nWert: " << Wert;
cout << "\nStartkey: " << Startkey;
cout << "\nNachfolger: " << Key[1];
}
break;
case '2': // Hinzufuegefunktion
{
cout <<("\nBitte geben Sie das Element zum hinzufuegen ein: ");
cin >> x;
Hinzufuegen(x);
}
break;
case '3': // Loeschfunktion
{
cout <<("\nBitte geben Sie das Element zum loeschen ein: ");
}
break;
case '4': // Programmende
cout <<("\n\n\t\tPROGRAMMENDE\n");
break;
default:
cout <<("\n\nBenutzen Sie nur die Zahlen 1 bis 4!");
}
}while(1);
}
[/code]
...hier kommt hinzufügen...
[code]
void QuickSort(int *A, int iLo, int iHi, int &cnt) // <---HIER
{
int Lo, Hi, Mid, T;
Lo = iLo;
Hi = iHi;
Mid = A[(Lo+Hi)/2];
do
{
while (A[Lo] < Mid)
Lo++;
while (A[Hi] > Mid)
Hi--;
if (Lo <= Hi)
{
cnt++;
T = A[Lo];
A[Lo] = A[Hi];
A[Hi] = T;
Lo++;
Hi--;
}
}
while (Lo <= Hi);
if (Hi > iLo)
QuickSort(A, iLo, Hi,cnt);
if (Lo < iHi)
QuickSort(A, Lo, iHi,cnt);
}
habs mit HIER markiert wo ich auf quicksort zugreifen will.
evo2