Schleife



  • Hallo.
    Ich habe das Problem, das ich eine endlosschleife bei else if geschaffen habe. Ich weiß aber nicht warum das so ist.
    Könnte mir das jemand erklären?

    Vielen Dank im Vorraus.

    #include <iostream>
    #include <math.h>

    using namespace std;

    int main(){

    double a1, b1, a2, b2, x1, x2, y1, y2, xx, yy;

    while((a1 != 0) || (b1!= 0) || (a2!= 0) || (b2 != 0)){

    int x = 0;

    if(a1 != a2){

    cout << "Geben Sie den Wert a1 ein: \n";
    cin >> a1;
    cout << "Geben Sie den Wert a2 ein: \n";
    cin >> a2;
    cout << "Geben Sie den Wert b1 ein: \n";
    cin >> b1;
    cout << "Geben Sie den Wert b2 ein: \n";
    cin >> b2;
    cout << "Alle Werte wurden eingegeben.\n";

    x1 = b1 / a1;
    x2 = b2 / a2;
    y1 = a1x+b1;
    y2 = a2
    x+b2;

    xx = (b2-b1)/(a2-a1);
    yy = a1*xx+b1;

    cout << "Die Achsenschnittpunkte der X-Achse von F1 ist: " <<"[ " << x1 << " / " << "0" << " ]\n"
    << "Die Achsenschnittpunkte der Y-Achse von F1 ist: " <<"[ " << "0" << " / " << y1 << " ]\n";
    cout << "Die Achsenschnittpunkte der X-Achse von F2 ist: " <<"[ " << x2 << " / " << "0" << " ]\n"
    << "Die Achsenschnittpunkte der Y-Achse von F2 ist: " <<"[ " << "0" << " / " << y2 << " ]\n";
    cout << "Der gemeinsame Schnittpunkt ist bei: " << "[ " << xx << " / " << yy << " ]\n";

    }else if(a1 == b1){

    x1 = b1 / a1;
    x2 = b2 / a2;
    y1 = a1*x+b1;
    y2 = a2*x+b2;
    
    xx = (b2-b1)/(a2-a1);
    yy = a1*xx+b1;
    
    cout << "Die Achsenschnittpunkte der X-Achse von F1 ist: " <<"[ " << x1 << " /  " << "0" << " ]\n"
    	 << "Die Achsenschnittpunkte der Y-Achse von F1 ist: " <<"[ " << "0" << " /  " << y1 << " ]\n";
    cout << "Die Achsenschnittpunkte der X-Achse von F2 ist: " <<"[ " << x2 << " /  " << "0" << " ]\n"
    	 << "Die Achsenschnittpunkte der Y-Achse von F2 ist: " <<"[ " << "0" << " /  " << y2 << " ]\n";
    cout << "Die Funktionen sind parallel zueinander und schneiden sich nicht.\n";
    
    }else{
    
    x1 = b1 / a1;
    x2 = b2 / a2;
    y1 = a1*x+b1;
    y2 = a2*x+b2;
    
    xx = (b2-b1)/(a2-a1);
    yy = a1*xx+b1;
    
    cout << "Die Achsenschnittpunkte der X-Achse von F1 ist: " <<"[ " << x1 << " /  " << "0" << " ]\n"
    	 << "Die Achsenschnittpunkte der Y-Achse von F1 ist: " <<"[ " << "0" << " /  " << y1 << " ]\n";
    cout << "Die Achsenschnittpunkte der X-Achse von F2 ist: " <<"[ " << x2 << " /  " << "0" << " ]\n"
    	 << "Die Achsenschnittpunkte der Y-Achse von F2 ist: " <<"[ " << "0" << " /  " << y2 << " ]\n";
    cout << "Die Funktionen sind identisch.\n";
    }
    

    }



    1. Warum wiederholst du drei mal den gleichen Code?
    2. Beim ersten erreichen der while-Schleife sind deine Variablen a1 ... b2 uninitialisiert, sprich jeder der Vergleiche mit 0 ist undefiniert.

    Mein Tipp, bring dein Programm in eine ordentliche Form, teile die Funktionalitäten in Funktionen auf und macht dir nochmal genau klar was du erreichen möchtest, dann werden sich deine Probleme garantiert von selbst lösen.


  • Mod

    Dieser Thread wird geschlossen.

    Du hast Dein Problem

    1. nicht reduziert
    2. unzureichend erklaert
    3. durch keine Eigeninitiative selbst zu loesen versucht

    Dazu hast Du mit fehlenden Code-Tags und Einrueckung an die 70 Zeilen Code gepostet. Der Titel des Threads spiegelt deinen Aufwand treffend wieder.

    Bitte tue Dir und der Community den Gefallen, diesen (im Uebrigen direkt am Kopfende des Boards gepinnten) Thread zu lesen und bei Deinem naechsten Post entsprechend zu handeln: https://www.c-plusplus.net/forum/topic/200753/du-brauchst-hilfe


Anmelden zum Antworten