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

Informatiker Board » Themengebiete » Praktische Informatik » if - Anweisung » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
123michi19

Alles klar, vielen Dank Daumen hoch
Karlito

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
123michi19

Ich vermute, dass es so nicht gehen kann, da Boolesche Ausdrücke nur true oder false kennen?
123michi19

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) ?
123michi19

Besten Dank :-)
eulerscheZahl

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.
123michi19

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?
eulerscheZahl

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)
123michi19

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 :-)
123michi19

Besten Dank smile In der Vorlesung hat die Dozentin extra noch davor gewarnt smile
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen.