Programm Berechnung quadratischer Funktionen benötige Hilfe



  • Hallo !
    Kann mir wer sagen, warum dieses Programm nach Eingabe der Werte a,b,c abschaltet.
    Hab da sicher einen grundlegenden Fehler gemacht, aber ich komm nicht dahinter

    #include <iostream.h>
    #include <math.h>
    #include <conio.h>
    
    void main()
    {
      clrscr();
      float a,b,c,x1,x2,p,q,p05,wurzel,xL;
      cout<<"Programm zur Berechnung quadratischer Funktionen"<<endl;
      cout<<"Werte von a,b,c eingeben"<<endl;
      cin >> a;
      cin >> b;
      cin >> c;
    	q=c/a;
    	p=b/a;
    	p05=p/(-2);
    	wurzel= sqrt (((p*p)/4)-q);
    	x1= p05+wurzel;
    	x2= p05-wurzel;
    
    	if (a!=0)
    	cout <<"X1="<<x1<<"X2="<<x2<<endl;
    		 if (a>0)
    		      cout <<"Parable ist positiv.Max ="<<p05<<endl;
    
    		 else
    		      cout <<"Parable ist negativ.Min ="<<p05<<endl;
    
    	else (a==0)
    	 cout <<"Lineare Funktion. Nur eine L”sung<<(-c)/b<<endl;
    
    }
    

    gruß martin



  • Nur kurz zu Erklärung

    Ich soll eine quadratische Funktion mit der -p/2 +- "wurzel" p*p/4 -q lösen.
    Oder angeben, dass es eine lineare Funktion ist wenn a = 0 ist.



  • Siehe dazu hier:
    http://c-plusplus.net/forum/viewtopic-var-t-is-111042.html

    Davon abgesehen dürfte das erst gar nicht kompilieren.

    #include <iostream.h>  //das heisst schon seit gut zehn Jahren iostream
    #include <math.h>      //ebenfalls veraltet
    #include <conio.h>
    
    void main()  //das lautete aber schon immer int main()
    {
      clrscr();
      float a,b,c,x1,x2,p,q,p05,wurzel,xL; //xL verwendest du später nicht
      cout<<"Programm zur Berechnung quadratischer Funktionen"<<endl;
      cout<<"Werte von a,b,c eingeben"<<endl;
      cin >> a;
      cin >> b;
      cin >> c;
    	q=c/a; //was ist, wenn für a 0 eingeben wurde?
    	p=b/a; //s.o.
    	p05=p/(-2);
    	wurzel= sqrt (((p*p)/4)-q); //wenn die Gleichung keine Lösung hat, hast du hier ein Problem
    	x1= p05+wurzel;
    	x2= p05-wurzel;
    
    	if (a!=0) //hier fehlen die geschweiften Klammern
    	cout <<"X1="<<x1<<"X2="<<x2<<endl; //Leerzeichen
    		 if (a>0)
    		      cout <<"Parable ist positiv.Max ="<<p05<<endl; //von positiven Parabeln hab ich noch nicht gehört...
                                                                 //aber nach oben geöffnete Parabeln haben eine Minimalstelle, keine Maximalstelle
    
    		 else
    		      cout <<"Parable ist negativ.Min ="<<p05<<endl; //hier auch
    
    	else (a==0) //muss einfach nur else heißen
    	 cout <<"Lineare Funktion. Nur eine L”sung<<(-c)/b<<endl; //da fehlt das abschließende Anführungszeichen
    
    }
    


  • Danke

    Das mit void und iostream.h geht bei mir nur so
    Jetzt gibt er mir zwar keinen Fehler mehr an, es ist aber immer noch so,dass nach der Eingabe von a,b,c schluss ist
    kann es mir nicht ganz erklären

    #include <iostream.h>
    #include <math.h>
    #include <conio.h>
    
    void main()
    {
      clrscr();
      float a,b,c,x1,x2,p,q,p05,wurzel;
      cout<<"Programm zur Berechnung quadratischer Funktionen"<<endl;
      cout<<"Werte von a,b,c eingeben"<<endl;
      cin >> a;
      cin >> b;
      cin >> c;
    
    	if (a!=0)
    	{
    		q=c/a;
    		p=b/a;
    		p05= p/(-2);
    		wurzel = sqrt (((p*p)/4)-q);
      		x1= p05+wurzel;
    		x2= p05-wurzel;
    		cout <<"X1="<< x1 <<"X2="<< x2 <<endl;
    	}
    		 if (a>0) {
    		      cout <<" Maximalstelle ="<< p05 <<endl;
                     }
    		 if (a<=0) {
    		      cout <<" Minimalstelle ="<< p05 <<endl;
    
    		 }
    
        else {
    	 cout <<"Lineare Funktion. Nur eine L”sung"<< (-c)/b <<endl;
    	 }
    
    }
    


  • Deswegen solltest du dir ja den verlinkten Artikel ansehen.
    Wenn das Programm fertig ist, schließt sich das Konsolenfenster natürlich wieder, wenn du keine weiteren Maßnahmen ergreifst.



  • Danke für den Link, aber das Problem liegt wo anders.
    Auch wenn ich noch eine Eingabeauforderung zb. "cin >> aus;" reintippe
    funktioniert es nicht



  • Hmja... wenn du Werte eingibst, die dazu führen, dass versucht wird, die Wurzel aus einer negativen Zahl zu ziehen, dann bricht das Programm sofort ab und gelangt damit auch nicht mehr zu deinem cin. Also würde ich da erst noch eine Überprüfung vornehmen.



  • es gibt ne besser möglichkeit:

    du lässt die 3 zahlen eingeben
    und lässt dir die determinante berechnen (die wurzel nur halt ohne wurzel)
    und wenn die kleiner 0 ist gibt es nur 2 komplexe lösungen
    wenns gleich 0 ist gibt es nur eine lösung ( -p/2 )
    und wenns grösser 0 ist gibt es 2 lösungen, genau die die du berechnen willst



  • Skym0sh0 schrieb:

    und lässt dir die determinante berechnen (die wurzel nur halt ohne wurzel)

    Du meinst sicher die Diskriminante 😉 .



  • ach is doch eh alles das gleiche xDDD

    jo meinte ich

    ich kürz das eh immer mit d ab, also is es auch peng 😉



  • jup das ist sicher besser
    danke


Anmelden zum Antworten