Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » C++ » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C++
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
prog12
unregistriert
C++ Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
21.04.2013 22:35
prog12
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?
21.04.2013 23:03
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 ==

__________________
Syntax Highlighting fürs Board (Link)
22.04.2013 08:05 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Airblader Airblader ist männlich
Doppel-As


Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
The best thing about a boolean is that even if you're wrong, you're only off by a bit.
22.04.2013 08:36 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
prog12
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
22.04.2013 11:36
prog12
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
22.04.2013 18:30
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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;
}


__________________
Syntax Highlighting fürs Board (Link)
22.04.2013 19:32 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Airblader Airblader ist männlich
Doppel-As


Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
The best thing about a boolean is that even if you're wrong, you're only off by a bit.
22.04.2013 20:02 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
prog12
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

a1 == 0 && b1 == 0

Ich wollte einfach formuliert schreiben " und"

Wie kann ich das in der programmiersprache ausdrücken?
22.04.2013 22:21
Airblader Airblader ist männlich
Doppel-As


Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?

__________________
The best thing about a boolean is that even if you're wrong, you're only off by a bit.
22.04.2013 23:53 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » C++