C++

Neue Frage »

Auf diesen Beitrag antworten »
prog12 C++

Meine Frage:
Hallo ich habe gerade probleme bei einer Aufgabe:

Die allgemeine Lösung eines linearen Gleichungssystems mit zwei Unbekannten x und y in der
Form
a1 * x + a2 * y = a3
b1 * x + b2 * y = b3 (ai, bi reelle Zahlen)
soll mit Hilfe eines C-Programms ermittelt werden.
a. Programmentwurf
Eingabedaten: ai, bi : reell
Lösungsweg: Der Algorithmus soll folgende Fallunterscheidungen treffen:
1. Eine oder beide Unbekannten sind nicht vorhanden (z.B. a1 = b1 = 0)
Ausgabe eines entsprechenden Textes ?kein 2*2-System?
2. Nennerdeterminante ungleich 0
Berechnung von x und y sowie entsprechende Ausgabe
3. Nennerdeterminante gleich 0, Zählerdeterminante ungleich 0
Ausgabe ?keine Lösung?
4. Nennerdeterminante gleich 0, Zählerdeterminante gleich 0
Ausgabe ?beliebig viele Lösungen?
Ausgabedaten: x,y und/oder entsprechender Text

Hat jemand tipps für mich wie ich bei dieser Aufgabe vorgehen kann?

Meine Ideen:
keine leider
 
Auf diesen Beitrag antworten »
prog12

In der Aufgabenstellung ist noch ein Lösungsprinzip gegeben:

Lösung des Gleichungssystems mittels Berechnung der Nenner- und Zählerdeterminanten:
Nenner-Determinante D:
( a1 * b2 ) - ( a2 * b1 )
Zähler-Determinante Dx:
( b2 * a3 ) - ( a2 * b3 )
Zähler-Determinante Dy:
( a1 * b3 ) - ( b1 * a3 )
x und y berechnen sich dann:
x = Dx / D
y = Dy / D

Mein Ansatz soweit:

#include <iostream>

using namespace std;

int main()
{

int ai;

int bi;

cout << " Geben sie die erste Zahl ein !" << endl;

cin >> ai;

cout << "Geben sie die zweite Zahl ein!" << endl;

cin >> bi;

int Nennerdeterminante;

Nennerdeterminante = (ai*bi) - (ai*bi);

int Zaehlerdetdx;

int Zaehlerdetdy;

int x;

int y;














if( ai = 0 && bi = 0 ) {


cout << " kein 2*2 System " << endl;


}







}

Stimmt es ein wenig ?

Oder bin ich auf dem falschen Dampfer?
Auf diesen Beitrag antworten »
eulerscheZahl

Hallo,
bei ai und bi ist das i ein Platzhalter (für 1 bzw. 2), du sollst ja 2 Gleichungen damit einlesen.
also: int a1, a2, b1, b2;
Dann kannst du die Nennerdeterminante auch richtig berechnen und kriegst nicht immer 0 raus.

Zitat:
if( ai = 0 && bi = 0 )

du machst hier keine Abfrage, sondern eine Zuweisung, Abfrage geht mit ==
Auf diesen Beitrag antworten »
Airblader

Ich weiß, dass ich da arg penibel bin, aber auch in Programmen, selbst wenn es nur eine Hausaufgabe ist, darf man durchaus auf die Rechtschreibung achten. Die hat man in der Regel ja auch schon ein paar Jahre zuvor gelernt.
 
Auf diesen Beitrag antworten »
prog12

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
#include <iostream>

using namespace std;

int main()
{

    float ai;

    float bi;

    int a1,a2,a3,b1,b2,b3;

    cout << " Geben sie die erste Zahl ein !" << endl;

    cin >> ai;

    cout << "Geben sie die zweite Zahl ein!" << endl;

    cin >> bi;

    int Nennerdeterminante;

    Nennerdeterminante = (a1*b2) - (a2*b1);

    int Zaehlerdetdx;
    
    Zaehlerdetdx = (b2*a3) - (a2*b3);
    
    int Zaehlerdetdy;
    
     Zaehlerdetdy = (a1*b3) - (b1*a3);
    
    

    int x;

    int y;

    x =  Zaehlerdetdx / Nennerdeterminante;

    y = Zaehlerdetdy / Nennerdeterminante;





    if( ai == 0 && bi == 0 ) {


        cout << " kein 2*2 System " << endl;


    }
    
    if( Nennerdeterminante != 0 ){
        
        
        cout << x && y << endl;
    }
    
    if( Nennerdeterminante == 0 && Zaehlerdetdx != 0 && Zaehlerdetdy != 0){
        
        
        cout << " Es gibt keine Loesung ! " << endl;
    }







}



Irgendwas stimmt mit dieser Zeile nicht leute.

cout << x && y << endl;

Warum wird hier mir ein Fehler angezeigt?


Ich hoffe das jetzt meine eigelesenen dateien durch das float jetzt reel sind.

Muss ich jetzt eigentlich auch das a1,a2,a3 usw. auch einlesen?

Das ist mir nicht so ganz klar.
Auf diesen Beitrag antworten »
prog12

Ich hab ein wenig noch an meinem Programm gearbeitet :

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
#include <iostream>

using namespace std;

int main()
{


    int a1,a2,a3,b1,b2,b3;

    cout << " Geben sie die erste Zahl ein !" << endl;

    cin >> a1;

    cout << "Geben sie die zweite Zahl ein!" << endl;

    cin >> a2;

    cout << " Geben sie die dritte Zahl ein !" << endl;

    cin >> a3;

    cout << " Geben sie die 4 Zahl ein !" << endl;

    cin >> b1;

    cout << " Geben sie die 5 Zahl ein !" << endl;

    cin >> b2;

    cout << " Geben sie die 6 Zahl ein !" << endl;

    cin >> b3;



    int Nennerdeterminante;

    Nennerdeterminante = (a1*b2) - (a2*b1);

    int Zaehlerdetdx;

    Zaehlerdetdx = (b2*a3) - (a2*b3);

    int Zaehlerdetdy;

     Zaehlerdetdy = (a1*b3) - (b1*a3);



    int x;

    int y;

    x =  Zaehlerdetdx / Nennerdeterminante;

    y = Zaehlerdetdy / Nennerdeterminante;



    a1 = b1;

    if( a1 == 0 ) {


        cout << " kein 2*2 System " << endl;


    }

    if( Nennerdeterminante != 0 ){


        cout << x << " "  << y  << endl;
    }

    if( Nennerdeterminante == 0 && Zaehlerdetdx != 0 && Zaehlerdetdy != 0){


        cout << " Es gibt keine Loesung ! " << endl;
    }

    if( Nennerdeterminante == 0 && Zaehlerdetdx == 0 && Zaehlerdetdy == 0){

       cout << " Beliebige viele Lösungen "  <<  x  << y << endl;




    }







}



Ein paar inhaltliche fehler sind glaub ich noch drin .

Wäre dankbar wenn mir jemand noch paar tips geben könnte.
Auf diesen Beitrag antworten »
eulerscheZahl

Habe mal drübergeschaut, siehe Kommentare im Code
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
#include <iostream>

using namespace std;

int main()
{
    double a1, a2, a3, b1, b2, b3;
    //double statt int für reelle Zahlen (mein Fehler)
    cout << "Geben Sie a1 ein!" << endl;
    cin >> a1;
    cout << "Geben Sie a2 ein!" << endl;
    cin >> a2;
    cout << "Geben Sie a3 ein!" << endl;
    cin >> a3;
    cout << "Geben Sie b1 ein!" << endl;
    cin >> b1;
    cout << "Geben Sie b2 ein!" << endl;
    cin >> b2;
    cout << "Geben Sie b3 ein!" << endl;
    cin >> b3;

    //auch hier double
    double Nennerdeterminante = (a1*b2) - (a2*b1);
    double Zaehlerdetdx = (b2*a3) - (a2*b3);
    double Zaehlerdetdy = (a1*b3) - (b1*a3);
    double x =  Zaehlerdetdx / Nennerdeterminante;
    double y = Zaehlerdetdy / Nennerdeterminante;
	
	//a1 = b1;
	//habe ich dir auskommentiert
	//sehe den Sinn darin nicht

    if( a1 == 0 && b1 == 0) //b1 ergänzt(siehe Aufgabenstellung), hier musst du aber trotzdem nochmal nachdenken 
    {
	    cout << " kein 2*2 System " << endl;
    }

    if( Nennerdeterminante != 0 )
    {
        cout << x << " "  << y  << endl;
    }

    if( Nennerdeterminante == 0 && (Zaehlerdetdx != 0 || Zaehlerdetdy != 0))
    { //an Stelle des || hattest du &&
        cout << " Es gibt keine Loesung ! " << endl;
    }

    if( Nennerdeterminante == 0 && Zaehlerdetdx == 0 && Zaehlerdetdy == 0)
    {
       cout << " Beliebige viele Lösungen "  /*<<  x  << y*/ << endl;
    } //Ausgabe von x und y entfernt, da sowieso nur Unsinn drinsteht
	system("PAUSE");
	return 0;
}
Auf diesen Beitrag antworten »
Airblader

Da eulerscheZahl es teilweise korrigiert, aber nicht kommentiert hat: Stelle dir mal vor, du bekommst ein Programm, das Folgendes ausspuckt:

code:
1:
2:
3:
Geben Sie die erste Zahl ein:
Geben Sie die zweite Zahl ein:
...


Hättest du wirklich die leiseste Ahnung, was für Zahlen du da einzugeben hast? Besser also, du sagst dem Benutzer, was er da eigentlich eingibt. Nich toller wäre es, wenn du vor der Eingabe der Zahlen noch eine Ausgabe machst, die das Gleichungssystem nochmal angibt – dass auch wirklich klar ist, was einzugeben ist.
Auf diesen Beitrag antworten »
prog12

a1 == 0 && b1 == 0

Ich wollte einfach formuliert schreiben " und"

Wie kann ich das in der programmiersprache ausdrücken?
Auf diesen Beitrag antworten »
Airblader

Die Bedingung lautet nun "a1 und a2 sind 0". Das ist aber nicht, was dir die Aufgabe an dieser Stelle sagt – also nochmal die Aufgabe lesen. Welchen Fall hast du vergessen?
 
Neue Frage »
Antworten »


Verwandte Themen