myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

aufgabe in c -> rekursiver selectionsort

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 10.12.10, 10:44   #1
panade
Anfänger
 
Registriert seit: Aug 2010
Beiträge: 5
Bedankt: 9
panade ist noch neu hier! | 0 Respekt Punkte
Standard aufgabe in c -> rekursiver selectionsort

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.
panade ist offline   Mit Zitat antworten
Ungelesen 11.12.10, 01:36   #2
wmosebach
Ist öfter hier
 
Registriert seit: Jan 2010
Beiträge: 189
Bedankt: 117
wmosebach ist noch neu hier! | 0 Respekt Punkte
Standard

Ich geb mal nen Tip ab, vll findest du damit deinen Fehler selber

Mitm Schreibtischtest findest du folgendes heraus, wenn du dir die Funktionsaufrufe aufschreibst:
([] steht dabei für das array, - für jede aufrufstufe)

sort([], 6)
-mini([], 6) feld[6]>feld[5]
--mini([], 4) feld[4]>feld[3]
---mini([], 2) feld[2]>feld[1]
----mini([], 0) feld[0]>feld[-1] -->error
//-----mini([], -2) ...

der rest müsste funktionieren..., aber erstmal durchtesten und notfalls nochmal bescheid geben

viel erfolg
__________________
Make the world a prettier place - get a bikini wax!
wmosebach ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.


Sitemap

().