Problem bei Aufgabe mit Funktion



  • Hi
    Ich muss in der schule eine Wochenstunde programmieren. Das klappt auch recht gut nur habe ich am Schluss ein Problem speziell bei Funktionen.
    Vielleicht kann sich das mal jemand kurz anschauen und sage was net stimmt. Das Problem ist wie bekomm ich diese Folge eben aus der Funktion wieder ins hauptprogramm? Aufgaben stellung ist einen Wert in die Folge einzuordnen, verwendet soll nur dieser ein vektor werden.

    #include <stdio.h>
    void einordnenzahl(int anzahlf, float einordnen[], float zahl)
    {
    int zaehlerf, stelle, n;

    for(zaehlerf=0;zaehlerf<=anzahlf-1 && zahl<=einordnen[zaehlerf];zaehlerf++){
    stelle=zaehlerf;
    }
    if(zahl=einordnen[stelle]){
    printf("Wert schon in Folge vorhanden");
    }
    else{
    for(zaehlerf=anzahlf;zaehlerf>=stelle;zaehlerf--){
    einordnen[zaehlerf+1]=einordnen[zaehlerf];
    }
    einordnen[stelle]=zahl;
    }
    }

    int main ()

    {

    float folge[100], wert,;
    int n, anzahlf;

    printf("Eingabe der Anzahl der Elemente der Folge: ");
    scanf("%d",&anzahlf);

    for(n=0;n<=anzahlf-1;n++){
    printf("%d.Element der Folge: ", n+1);
    scanf("%f", &folge[n]);
    }
    printf("Eingabe des einzuordnenden Wertes: ");
    scanf("%f", &wert);

    einordnenzahl(anzahlf, folge,wert);
    for(n=0;n<=anzahlf-1;n++){
    printf("%d.Element: %f", n+1, folge[n]);
    }

    return 0;

    }



  • erstmal

    #include <stdio.h>
    
    void einordnenzahl(int anzahlf, float einordnen[], float zahl){
        int zaehlerf, stelle;
    
        for(zaehlerf=0;zaehlerf<=anzahlf-1 && zahl<=einordnen[zaehlerf];zaehlerf++)
            stelle=zaehlerf;
    
        if(zahl=einordnen[stelle])
            printf("Wert schon in Folge vorhanden");
    
        else{
            for(zaehlerf=anzahlf;zaehlerf>=stelle;zaehlerf--){
                einordnen[zaehlerf+1]=einordnen[zaehlerf];
            }
        einordnen[stelle]=zahl;
        }
    }
    
    int main (){
    
        float folge[100], wert;
        int n, anzahlf;
    
        printf("Eingabe der Anzahl der Elemente der Folge: ");
        scanf("%d",&anzahlf);
    
        for(n=0;n<=anzahlf-1;n++){
            printf("%d.Element der Folge: ", n+1);
            scanf("%f", &folge[n]);
        }
    
        printf("Eingabe des einzuordnenden Wertes: ");
        scanf("%f", &wert);
    
        einordnenzahl(anzahlf, folge,wert);
    
        for(n=0;n<=anzahlf-1;n++)
            printf("%d.Element: %f", n+1, folge[n]);
    
        return 0;
    
    }
    

    erstmal formatieren 😉 nun dein problem angucken 😃

    ----

    ganz ehrlich, formatier beim nächsten mal deinen code und schreib jetzt bitte paar kommentare oder schreibmal was du machen sollst, irgendwie bin ich zu blöd, verstehe nicht was du für eine folge meinst -> mathematische ?

    der code sieht leicht c aus 😛



  • Die Aufgabenstellung ist so:
    Es soll eine folge eingegebn werde,welche fallend sortiert ist. Dazu wird ein wert eingegeben der in diese zahlenfolge einsortiert werden soll. Es darf aber nur 1 Vektor verwendet werden. Nun sollen wir das ganze als Funktion machen, wie ich es oben gemacht habe. Mein Problem ist aber nun wie kriege ich den geänderten Vektor in mein Hauptprogramm zum Ausgeben, oder ist es möglich die Änderungen die die Funktion am Vektor ausführt sofort auf den vektor im hauptprogramm zu übertragen?

    Die Idee hinter dem Algorithmuss: Suche die Stelle an der die Zahl eingefügt wird, setze am letzten Element des Vektors an und verschiebe jedes Element um eins nach hinten bis zur stelle wo dan der wert eingefügt wird.



  • also wenn du mit arrays arbeitest und die als parameter an eine funktion übergibst brauchst du nichts zurückgeben, du machst z.b. eine forschleife in main (nach dem funktionsaufruf) und gibst alles raus. array wird quasi als pointer übergeben, darum versteh ich nicht ganz deine problematik.



  • mein problem ist das das oben nicht funktioniert sprich das programm. ich kann da keinen fehler erkennen, nur wenn ich den vektor und die einzuordnende zahl eingegeben habe kommt ne windows problemnachricht und ich muss abbrechen.

    Stelfer schrieb:

    also wenn du mit arrays arbeitest und die als parameter an eine funktion übergibst brauchst du nichts zurückgeben, du machst z.b. eine forschleife in main (nach dem funktionsaufruf) und gibst alles raus. array wird quasi als pointer übergeben, darum versteh ich nicht ganz deine problematik.

    habe ich doch gemacht funktionsaufruf in main der den geänderten vektor ausgeben soll



  • if(zahl=einordnen[stelle])
    

    muss schonmal

    if(zahl==einordnen[stelle])
    

    sein

    for(zaehlerf=anzahlf;zaehlerf>=stelle;zaehlerf--)
        einordnen[zaehlerf+1]=einordnen[zaehlerf];
    

    das soltle wohl zaehlerf=anzahlf-2 sein, oder nicht?


Anmelden zum Antworten