Mein Programm bricht in der Mitte ab



  • Hallo,
    wir haben in der Schule als Hausaufgabe bekommen ein einfaches Programm zu schreiben bei dem bestimmte x-Werte zwischen -6 und 6 in eine Funktion eingegeben und berechnet werden. Der Abstand der x-Werte zueinander soll individuell eingegeben werden.
    Leider bricht mein Programm in der Mitte ab.
    Mir wird also meine Schrittlänge angezeigt, aber keine Ausgabe der Berechnung.
    Hier mein Quellcode:

    #include <iostream>
    #include <cmath>
    using namespace std;
    double schrittweite;
    int *array;

    int anzahl=0;
    void eingabe_schrittwert()
    {

    cout <<"Geben sie bitte einen Schrittwert ein:\n";
    cin >>schrittweite;

    cout <<"Sie haben die Schrittweite "<<schrittweite<<" gewaehlt.\n";
    anzahl=12/schrittweite;
    }

    void berechnung ()
    {

    for (int i=-6; i<=6; i=i+schrittweite)
    {
    array[i]=2*pow (i, 3)+5.5*pow (i,2)-4.2*i-2;
    }
    }

    void ausgabe()
    {
    cout <<"Hier ihre Ergebnisse:\n";
    cout <<"x\t\t"<<"y"<<endl;

    for (int i=-6; i<=6; i=i+schrittweite)
    {
    cout <<i<<"\t\t"<<array[i]<<endl;
    }
    }

    int main()
    {
    anfang:
    eingabe_schrittwert();
    array = new int[anzahl];
    berechnung();
    ausgabe();
    int sprung;
    cout <<"Wollen sie noch einmal von vorne beginnen?\nDann geben sie bitte die 3 ein.\n";
    cin >>sprung;
    if (sprung==3)
    {
    goto anfang;
    }
    }

    Ich muss dazu sagen, dass ich blutiger Anfänger bin und das eines meiner ersten Programme ist.
    Ich habe auch ein bisschen im Quellcode rumprobiert nachdem es nicht funktioniert hat.
    Bin aber leider nicht auf den Fehler gekommen.
    Ich bin mir sicher, jemandem der sich schon länger damit auseinandersetzt wird was auffallen (nur mir eben leider nicht 😃 ).
    Gruß
    Elwedridsch



  • Der Index von einem Array fängt bei 0 an. Immer.

    Lass dir mal anzahl ausgeben.
    Lass dir in der Berechnung mal die Werte von i ausgeben.
    Zähl nach wie viele das sind und ob das mit anzahl übereinpasst.

    Dann schmeisst du den Code weg und fängst nochmal an.
    - ohne goto
    - ohne globale Variablen
    - mit Funktionsparamtern

    Nutze beim nächsten mal auch die Code-Tags für deinen Code.
    Code mit der MAus markieren und auf den C++ button unter den 😞 :p clicken


Anmelden zum Antworten