Aufgabe C-Programm



  • Hallo zusammen,

    ich studiere Elektrotechnik und brauche Hilfe bei einer Hausaufgabe:

    Bin ein völliger Anfänger in diesem Bereich und freue mich über jede Unterstützung!

    Gegeben sei folgendes C-Programm:

    “#include <stdio.h>
    float funk (int zahl);
    void main ()
    {
    int i;
    printf("\n Eingabe");
    scanf("%d", &i);
    printf("\n \n Ausgabe(%d) = %f",i,funk(i));
    }
    float funk (int zahl)
    {
    float erg=0.0;
    if (zahl>0)
    erg=zahl+funk(zahl/3) / funk(zahl-1);
    else erg=1.0;
    return(erg);
    }

    a) Welche Programmiermethode findet hier Anwendung?

    b) Berechnen Sie das Ergebnis für die Eingabe i=5. Geben Sie dazu
    Schritt für Schritt in einer Tabelle die Werte für erg und zahl (bzw.
    i) an. Wodurch sind hier die „Schritte“ bestimmt, d.h. an welcher Stelle
    im Programm verändern sich jeweils zahl und erg?

    c) Terminiert (d.h. endet) das Programm für jede zulässige Eingabe? Begründen
    Sie Ihre Antwort.



  • Punkt 1: http://www.c-plusplus.net/forum/200753
    Aber besten liest du gleich den ganzen Artikel durch.



  • Na so ganz ohne Eigeninitiative... wie viel zahlst du für das Erledigen deiner Hausaufgaben? Ich mach's für 50€ (Vorkasse natürlich).



  • Wenn Du Elektrotechnik studierst und Euer Dozent eine derartige Aufgabe stellt, hast Du entweder die letzten Paar Stunden Programmierung verpasst oder der Dozent möchte Eure Vorkenntnisse prüfen.
    In jedem Falle kannst Du Dir da nur selbst helfen, denn erfahrungsgemäß wird sich die Schwierigkeit der Aufgaben in Zukunft eher steigern und Deine Kenntnisse sollten sich dem anpassen.

    182 schrieb:

    Gegeben sei folgendes C-Programm:

    #include <stdio.h>
    float funk (int zahl);
    void main ()
    {
       int i;
       printf("\n Eingabe");
       scanf("%d", &i);
       printf("\n \n Ausgabe(%d) = %f",i,funk(i));
    }
    
    float funk (int zahl)
    {
       float erg=0.0;
       if (zahl>0)
       erg=zahl+funk(zahl/3) / funk(zahl-1);
       else erg=1.0;
       return(erg);
    }
    

    a) Welche Programmiermethode findet hier Anwendung?

    > Wahrscheinlich hast Du in Deinen Aufzeichnungen oder Lehrbüchern dazu eine Reihe möglicher Antworten - such Dir eine aus.

    b) Berechnen Sie das Ergebnis für die Eingabe i=5. Geben Sie dazu Schritt für Schritt in einer Tabelle die Werte für erg und zahl (bzw. i) an. Wodurch sind hier die „Schritte“ bestimmt, d.h. an welcher Stelle im Programm verändern sich jeweils zahl und erg?

    > Eine Tabelle anlegen und Grundschul-Rechnungen durchführen bekommt der Durchschnitts-Student noch hin.

    c) Terminiert (d.h. endet) das Programm für jede zulässige Eingabe? Begründen Sie Ihre Antwort.

    > Solche Fragen hätten bei uns früher zu üblen Diskussionen geführt, weil eine nicht absolut konkrete Fragestellung keine konkreten Antworten zulässt.
    > Steht die Terminierung nur für ein Programmende nach dem Durchlaufen der main-Funktion? Ist auch ein Programmabbruch gemeint, nachdem das Programm endet?



  • Compilier das Programm und schau was es macht.

    Baue zusätzliche Ausgaben mit ein oder nimm den Debugger.
    Dann änderst du Kleinigkeiten (Zahlenwerte, Funktionsaufruf askommentieren, ...) und schaust, was dann passiert.



  • 182 schrieb:

    Hallo zusammen,

    ich studiere Elektrotechnik und brauche Hilfe bei einer Hausaufgabe:

    Bin ein völliger Anfänger in diesem Bereich und freue mich über jede Unterstützung!

    Gegeben sei folgendes C-Programm:

    “#include <stdio.h>
    float funk (int zahl);
    void main ()
    {
    int i;
    printf("\n Eingabe");
    scanf("%d", &i);
    printf("\n \n Ausgabe(%d) = %f",i,funk(i));
    }
    float funk (int zahl)
    {
    float erg=0.0;
    if (zahl>0)
    erg=zahl+funk(zahl/3) / funk(zahl-1);
    else erg=1.0;
    return(erg);
    }

    a) Welche Programmiermethode findet hier Anwendung?

    b) Berechnen Sie das Ergebnis für die Eingabe i=5. Geben Sie dazu
    Schritt für Schritt in einer Tabelle die Werte für erg und zahl (bzw.
    i) an. Wodurch sind hier die „Schritte“ bestimmt, d.h. an welcher Stelle
    im Programm verändern sich jeweils zahl und erg?

    c) Terminiert (d.h. endet) das Programm für jede zulässige Eingabe? Begründen
    Sie Ihre Antwort.

    a) http://de.wikipedia.org/wiki/Funktionale_Programmierung
    b)

    erg=5+funk(1.66) / funk(4)
    erg=5+[1.66 + funk(0,55)/funk(0.66) ] / [4 + funk(1,33) / funk(3)]
    usw..
    

    am besten du Kompilierst das Programm mit http://sourceforge.net/projects/dev-cpp/files/Binaries/Dev-C%2B%2B%204.9.9.2/devcpp-4.9.9.2_nomingw_setup.exe/download
    c) frag diesen "professor" wie er "jede ZULÄSSIGE Eingabe" definiert, denn wenn die Eingabe "zulässig" ist, muss das Programm terminieren. Ausgenommen von stack overflows usw. terminiert es immer, wenn die eingabedaten aus zahlen bestehen 🙄


Anmelden zum Antworten