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

Informatiker Board » Themengebiete » Theoretische Informatik » Wo ist der Fehler? :-( » 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 Wo ist der Fehler? :-(
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Markus
unregistriert
Wo ist der Fehler? :-( 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:
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?

Dateianhang:
txt Quellcode.txt (551 Byte, 376 mal heruntergeladen)
01.05.2013 11:01
Markus
unregistriert
RE: Wo ist der Fehler? :-( Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Edit: Es geht um Programmiersprache C smile
01.05.2013 11: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

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.)


__________________
Syntax Highlighting fürs Board (Link)
01.05.2013 11:22 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Markus
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

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"?
01.05.2013 11:32
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

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.

__________________
Syntax Highlighting fürs Board (Link)
01.05.2013 11:46 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Markus
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

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ß
01.05.2013 12:23
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

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");


__________________
Syntax Highlighting fürs Board (Link)
01.05.2013 12:32 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Markus
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

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

Vielen Dank dafür!

Gruß!
01.05.2013 12:36
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Wo ist der Fehler? :-(