Verständnisproblem

Post Reply
Message
Author
logo
Posts: 20
Joined: 06. Mar 2003 23:42

Verständnisproblem

#1 Post by logo »

Hallo,

was heißt gleichzeitig und warum dann so...?

1.

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
if(x)
...
else if(y)
...
</font><hr></pre></blockquote>

ODER

2.

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
if(x)
...
else if(y)
...
</font><hr></pre></blockquote>

Meine Interpretation:
zu 1.
wenn (x) dann...
(oder) wenn (y) dann...

zu 2.
wenn (x) und wenn (y) dann...
oder wenn...

2 ist für mich gleichzeitig, aber so stimmt es nicht.
Wo ist mein Gedankenfehler?

bis bald
Andreas

chrizel

Re: Verständnisproblem

#2 Post by chrizel »

1) 1. und 2. ist der identische Code. Worauf willst du hinaus?
2) Stelle mal deine Fragen konkreter, denn so versteht das keiner.

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
if(x)
...
else if(y)
...
</font><hr></pre></blockquote>

Bedeuted:
Wenn x, dann ... - sonst wenn y, dann ...

Kann man so lesen wie es dasteht. Wenn x zutrifft wird y nicht mehr ausgeführt, denn es heisst ja "else if" (also "sonst wenn").

Vielleicht solltest du erst mal mit was leichterem anfangen als C?

logo
Posts: 20
Joined: 06. Mar 2003 23:42

Re: Verständnisproblem

#3 Post by logo »

Schreiben Sie ein Programm, das eine 4-stellige Jahreszahl übergeben bekommt und bestimmt, ob es sich um ein Schaltjahr handelt.
Ein Schaltjahr liegt dann vor, wenn die Jahreszahl durch 4 teilbar ist, aber nur dann, wenn sie nicht gleichzeitig durch 100 geteilt werden kann. Ist die Jahreszahl hingegen durch 400 teilbar, so liegt ein Schaltjahr vor.

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
/* MEINE LOESUNG */

#include<stdio.h>
#include<stdlib.h>

int main()
{
int jahr;
printf("4-stellige Zahl eingeben: ");
scanf("%4d", &jahr);

if(jahr%4==0)
{
if(jahr%100==0)
printf("Kein Schaltjahr
");

else if(jahr%400==0)
printf("Schaltjahr
");

else
printf("Kein Schaltjahr
");
}
else
printf("Kein Schaltjar
");

exit(0);
}

/* MUSTERLOESUNG */

void int()
{
int y, hi;

printf("Jahreszahl eingeben:
");
scanf("%d", &y);

if(y%4)
hi = 0;

else if(y%100)
hi = 1;

else if(y%400)
hi = 0;

else
hi = 1;

if(hi)
printf("Schaltjahr
");
else
printf("Kein Schaltjahr
");

exit(0);
}
</font><hr></pre></blockquote>

Udo M.

Re: Verständnisproblem

#4 Post by Udo M. »

"gleichzeitig" ist (umgangs)sprachlicher Unfug, richtig ist ein boolsches UND: &&;
Gegen Fehlinterpretation bei der Assoziativität der Operatoren helfen Klammern! Der Code ist auch leichter lesbar.

uljanow

Re: Verständnisproblem

#5 Post by uljanow »

deine lösung ist korrekt, sie ist im prinzip identisch mit der musterlösung. wenn du deine gleichheitszeichen zu "ungleich" machst und den code entsprechend "umdrehst", hast du den gleichen ablauf. (ich würde trotzdem die == lassen, es ist anschaulicher).

logo
Posts: 20
Joined: 06. Mar 2003 23:42

Re: Verständnisproblem

#6 Post by logo »

Danke.

Post Reply