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

Informatiker Board » Themengebiete » Praktische Informatik » if - Anweisung » 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 if - Anweisung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
123michi19
unregistriert
if - Anweisung 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 zusammen,

ich habe irgendwo einen Denkfehler in meinem Code. Er befindet sich im Anhang.

Egal ob ich kleiner, gleich oder größer angebe, ich bekomme meinen Text immer als Ausgabe. Wo liegt hier mein Fehler?



Meine Ideen:
Vielen Dank :-)

123michi19 hat dieses Bild (verkleinerte Version) angehängt:
Code.jpg

25.10.2014 14: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

Im Semikolon nach dem if(a>b)

__________________
Syntax Highlighting fürs Board (Link)
25.10.2014 15:49 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
123michi19
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

Besten Dank smile In der Vorlesung hat die Dozentin extra noch davor gewarnt smile
25.10.2014 15:51
123michi19
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

Noch eine kurze Zweitfrage:

Wenn ich angeben möchte, dass

if (x<y) AND (y==z)

gelten soll, wie schreibe ich das denn am Besten? (Die Variablen habe ich natürlich zuvor deklariert)

Vielen Dank :-)
25.10.2014 17:07
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

if (x < y && y == z)
das oder kriegst du mit ||

hier wird jeweils erst nur der erste Teil getestet und dann das weitere Vorgehen entschieden. (wenn bei and der erste Teil falsch ist, kann die Gesamtaussage nicht mehr wahr werden)
Das hat den Vorteil, dass du z.B. sicherstellen kannst, dass du nicht außerhalb das Arrays bist, bevor du einen Teil davon ausliest.

Eine Verknüpfung, die beide Aussagen prüft, kriegst du mit & bzw. |
Wenn du und mit oder kombinierst, hat und die stärkere Bindung (wie Punkt vor Strich, mit und als Punkt)

__________________
Syntax Highlighting fürs Board (Link)
25.10.2014 17:56 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
123michi19
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

Vielen Dank für die Antwort. Jetzt muss ich mir helfen lassen, da ich alleine nicht weiterkomme.

Die Aufgabenstellung ist eigentlich relativ simple, aber ich hänge seit Stunden daran fest.

Schreiben Sie ein Programm, dass für eine Jahreszahl ausgibt, ob es sich um ein Schaltjahr handelt oder nicht.
Hinweis: Jahreszahlen, die durch 4 teilbar sind, sind Schaltjahre (z.B.2004). Das gilt jedoch nicht, wenn die Jahre durch 100 teilbar sind (z.B. war 1900 kein Schaltjahr). Sind die Jahre jedoch zusätzlich durch 400 teilbar, handelt es sich wieder um Schaltjahre (z.B.2000).

Ich überlege die ganze Zeit schon, welche Bedingung da zuerst erfüllt werden muss?
25.10.2014 19:09
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

Wie so oft gibt es mehrere Möglichkeiten:
code:
1:
2:
3:
4:
boolean schaltjahr = false;
if (jahr % 400 == 0) schaltjahr = true;
else if (jahr % 100 == 0) schaltjahr = false;
else if (jahr % 4 == 0) schaltjahr = true;

oder
code:
1:
2:
3:
4:
boolean schaltjahr = false;
if (jahr % 4 == 0) schaltjahr = true;
if (jahr % 100 == 0) schaltjahr = false;
if (jahr % 400 == 0) schaltjahr = true;

oder
code:
1:
boolean schaltjahr = jahr % 400 == 0 || jahr % 4 == 0 && jahr % 100 != 0;

Die Regel mit 400 Jahren ist wichtiger als die für 4 Jahre, also darf sie von letzterer nicht überschrieben werden. Das erreichst du, indem du die für 4 Jahr entweder nur ausführst, wenn vorher keine gegriffen hat (mit else) oder indem du die für 400 Jahr zuletzt beachtest und das vorherige Ergebnis überschreibst. Natürlich kann man auch alles in eine Zeile packen.

__________________
Syntax Highlighting fürs Board (Link)
25.10.2014 19:25 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
123michi19
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

Besten Dank :-)
25.10.2014 19:31
123michi19
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

Da fällt mir doch glatt noch was ein, was ich schon die ganze Zeit fragen wollte.

Ist es möglich zu schreiben,

if (x geteilt durch 400 = wahr) ?
25.10.2014 19:41
123michi19
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 vermute, dass es so nicht gehen kann, da Boolesche Ausdrücke nur true oder false kennen?
25.10.2014 20:43
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

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

Hi,

in java geht soetwas nicht. In C und C++ ist es so, dass 0 false ist und alles ungleich 0 ist true. In C wäre also folgendes möglich:

code:
1:
2:
3:
4:
5:
int schaltjahr = 0; //int ist hier Absicht, da reines C keinen eigenen Datentyp für logische Werte hat

schaltjahr = !(jahr % 4) && (jahr % 100) || !(jahr % 400);


Du merkst aber sicher, dass das furchtbar schwer zu lesen ist.

In java ginge noch folgendes:

code:
1:
2:
3:
4:
5:
6:
7:
bool schaltjahr = false;

schaltjahr &= (jahr % 4) == 0;
schaltjahr &= (jahr % 100) != 0;
schaltjahr |= (jahr % 400) == 0;


oder

code:
1:
2:
3:
4:
5:
bool schaltjahr = false;

schaltjahr = (jahr % 4) == 0 && (jahr % 100) != 0 || (jahr % 400) == 0;


Ist aber auch schwer zu lesen.

Gruß,

Karlito
25.10.2014 23:59 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
123michi19
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

Alles klar, vielen Dank Daumen hoch
26.10.2014 08:10
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » if - Anweisung