vorab mein code ist totaler gedanken mist... aber da ich 2 stunden brainfuck betrieben habe würde ich gern wissen wo der fehler ist.
aufgabe war selection sort rein rekursiv lösen.
Code:
#include
int mini(int *feld, int size){
int min;
min=feld[size];
size=size-1;
if(size==0){
return min;
}
if(min>feld[size]){
min=feld[size];
}
return mini(feld, size-1);
}
void feldaus(int *feld, int size){
int i=0;
for(i;i<7;i++){
printf("%d. Zahl: %d \n", i, feld[i]);
}
}
void tausch(int *feld, int i, int j){
int temp;
temp=feld[i];
feld[i]=feld[j];
feld[j]=temp;
}
int such(int *feld, int size,int min){
if(feld[size]==min){
printf("stelle des minimums: %d\n", size);
return size;
}
such(feld, size-1, min);
}
int sort(int *feld,int size){
int min;
int s;
if(size==7){
size--;
}
if(size==0){
return 0;
}
min=mini(feld, size);
s=such(feld, size, min);
tausch(feld, s, size);
sort(feld, size-1);
}
int main(int argc, char* arghv[])
{
int i=0;
int size=6;
int min;
int s;
int feld[7];
for(i;i<7; i++){
printf("%d. Zahl eingeben: ", i);
scanf("%d", &feld[i]);
}
sort(feld, size);
feldaus(feld, size);
return 0;
}
es gibt funktionen
sort-> sortieren
such-> suchen
mini -> minimum im feld finden
tausch -> tausch in dreiecksform
plan war: suche im feld das minimum setze es an das ende vom feld und wiederhole für den felddurchlauf -1 feldstelle
rekkursiv bedeutet in dem zusammenhang weitestgehend es ohne for schleifen und nur durch sich selbst aufrufende funktionen zu realisieren.
witzigster part: sort ruft funktion mini auf mini liefert das minimum sort ruft such auf um die stelle an der das minimum stand zurück zu geben <<<< war das einfachste was mir auf die schnelle einfiel da ich keine lust hatte die minimum suche doppelt rekkursiv zu machen.