Wo ist der Fehler? :-(

Neue Frage »

Auf diesen Beitrag antworten »
Markus Wo ist der Fehler? :-(

Meine Frage:
Hi!
Ich soll ein Programm schreiben welches die Nullstelle(n) von [latex]x^2+ax+b=0[/latex] für vom Nutzer eingegebene [latex]a,b\in \mathbb \mathit{double}[/latex] angibt, falls existent.

Hier mein Quellcode:

Meine Ideen:
Zum einen versteh ich nicht, warum Code::Blocks in Zeile 22 eine ';' vor 'printf' erwartet...

Zum anderen, wenn ich z.B. [latex]a=1.[/latex], [latex]b=7.[/latex] eingebe, kommt in der Konsole ein abstruses Ergebnis...

Hat jemand von euch Zeit mir zu helfen?
 
Auf diesen Beitrag antworten »
Markus RE: Wo ist der Fehler? :-(

Edit: Es geht um Programmiersprache C smile
Auf diesen Beitrag antworten »
eulerscheZahl

Du hast folgende Fehler:
Zeile 21: else if
Zeile 6: du verwendest a und b zum Berechnen von Dis, ohne a und b vorher eingelesen zu haben
Zeile 19: " in printf an der falschen Stelle, führt bei mir zur Ausgabe
Einzige Nullstelle bei 0.0000000
, -a/(2.)
Auf diesen Beitrag antworten »
Markus

Tausend Dank! Es klappt denke ich smile

Eigentlich komisch: In unserem Skript steht, wenn man so eine Fallunterscheidung in 2 Fälle hat macht man:

if(...)
...;

else(...)
...;


Und wenn es n Fälle sind soll man das machen:

if(...)
...;

(n-2) mal else if(...)
...;

else(...)
...;



Also wenn es mehr als 2 Fälle sind immer zunächst "if" und dann den Rest nur "else if"?
 
Auf diesen Beitrag antworten »
eulerscheZahl

Aber dann muss die Bedingung bei else ganz weg:
code:
1:
2:
3:
4:
5:
6:
if (Bedingung1)
    Anweisung1
else if (Bedingung2)
    Anweisung 2
else //hier keine Bedingung
    Anweisung 3

Wenn du alles mit else if machst, kann es je nach Wahl der Bedingungen sein, dass gar nichts ausgeführt wird.
Auf diesen Beitrag antworten »
Markus

Achso danke.

Hmm. Wenn ich das hier sehe:

code:
1:
2:
3:
4:
5:
6:
if (Bedingung1)
    Anweisung1
else if (Bedingung2)
         Anweisung 2
else //hier keine Bedingung    
         Anweisung 3



Bedeutet dann "else if" soviel wie "und wenn" / "und falls"?

Warum darf ich nach else dann keine Bedingung schreiben? Weiß der Compiler etwa automatisch, was der andere Fall ist? Kann er sich das zusammenreimen?

Wie mache ich es dann, wenn ich 3 Fälle zu unterscheiden haben (von denen ein Fall z.B. 2 Bedingungen hat)?

Gruß
Auf diesen Beitrag antworten »
eulerscheZahl

else heißt soviel wie "sonst", das heißt, wenn das if nicht erfüllt ist, springt das Programm direkt zum else.
else if heißt "sonst wenn", hier braucht man dann wieder eine Bedingung (wenn was erfüllt ist).

1 Fall mit zwei Bedingungen:
du kannst die Bedingungen zu einer verbinden:
bed1 && bed2 //&& heißt und, das heißt beide Bedingungen müssen erfüllt sein
bed1 || bed2 //|| heißt oder, es reicht, wenn eine Bedingung erfüllt ist
Bsp.:
code:
1:
2:
3:
4:
5:
6:
if (zahl >= 10 && zahl <= 20)
    printf("die Zahl liegt zwischen 10 und 20");
else if (zahl < 10)
    printf("die Zahl ist kleiner als 10");
else //keine der obigen Bedingungen erfüllt
    printf("die Zahl ist größer als 20");
Auf diesen Beitrag antworten »
Markus

Wow. Eine Antwort, die ich auf Anhieb verstehe zusammen mit einem anschaulichen und viel sagenden Beispiel.

Vielen Dank dafür!

Gruß!
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »