www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "C/C++" - C++ Schaltjahr
C++ Schaltjahr < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

C++ Schaltjahr: unklar
Status: (Frage) beantwortet Status 
Datum: 18:55 Mo 01.02.2010
Autor: niemand0

Aufgabe
Schreibe ein Programm SCHALTJ.C, das eine Jahreszahl als int-Wert von der Tastatur einliest und anschließend ausgibt, ob es sich um ein Schaltjahr handelt oder nicht. Die Bestimmung eines Schaltjahres erfolgt nach der folgenden mehrstufigen
Regel: Wenn die Jahreszahl ohne Rest durch 4 teilbar ist, handelt es sich um ein Schaltjahr.
Ausnahme: Wenn die Jahreszahl auch durch 100 ohne Rest teilbar ist, dann handelt es sich doch nicht um ein Schaltjahr:
Ausnahme von der Ausnahme: Wenn die Jahreszahl durch 400 ohne Rest teilbar ist, dann handelt es sich doch um ein Schaltjahr.  

aloah,
wir arbeiten in informatik mit dev-c++
und ich komme bei dieser aufgabe irgendwie nicht weiter
mein ansatz bis jetzt ist :
/* schaltjahr.C OT23-V 28.1.2010*/
#include <stdio.h>
#include <conio.h>
int main()
{
int jahr=0;
printf("Dieses Programm errechnet ob eine eingegebene Jahrezahl ein Schaltjahr ist:");
printf("Geben sie die Jahreszahl ein:");
scanf("%d", &jahr);
  if (jahr % 4 ==0)
{
  if (jahr % 100==0)
  {
  if (jahr %400 ==0)
   printf("%d ist ein [mm] Schaltjahr.\n", [/mm] jahr);
  else
   printf("%d ist kein [mm] Schaltjahr.\n", [/mm] jahr);
  }
  else
   {
  if (jahr %400 ==0)
   printf("%d ist ein [mm] Schaltjahr.\n", [/mm] jahr);
  else
   printf("%d ist kein [mm] Schaltjahr.\n", [/mm] jahr);
  }
  else
   printf("%d ist [mm] Schaltjahr.\n", [/mm] jahr);
}
  else
   printf("%d ist kein [mm] Schaltjahr.\n", [/mm]  jahr);
return 0;
}

wäre nett wenn mir jemand einen kleinen tipp geben würde :)


        
Bezug
C++ Schaltjahr: Antwort
Status: (Antwort) fertig Status 
Datum: 19:54 Mo 01.02.2010
Autor: Karl_Pech

Hallo niemand0,


Wenn man mit mehreren if-Abzweigungen arbeiten muß, ist es wichtig die if-Blöcke zu kommentieren und visuell einzurücken, um den Überblick nicht zu verlieren. Ich denke, das folgende Programm sollte funktionieren, sofern ich nichts übersehen habe. Ich habe dabei dein Programm genommen und es ein wenig gekürzt.


1: #include <stdio.h>
2:
3: int main() 
4:
5:     int jahr = 0;
6:
7:     printf("Dieses Programm errechnet ob eine eingegebene Jahrezahl ein Schaltjahr ist:");
8:     printf("Geben sie die Jahreszahl ein:");
9:
10:     scanf("%d", &jahr);
11:
12:     /* Regel: Wenn die Jahreszahl ohne Rest durch 4 teilbar ist, ... (3) */
13:     if (jahr % 4 ==0) {
14:         /* Ausnahme: Wenn die Jahreszahl auch durch 100 ohne Rest teilbar ist, ... (1) */
15:         if (jahr % 100==0) {
16:             /* Ausnahme von der Ausnahme: Wenn die Jahreszahl durch 400 ohne Rest teilbar ist, ... (2) */
17:             if (jahr % 400 ==0)
18:                 /* (2) ... dann handelt es sich doch um ein Schaltjahr. */
19:                 printf("%d ist ein Schaltjahr.\n", jahr); 
20:             else
21:                 /* (1) ... dann handelt es sich doch nicht um ein Schaltjahr. */
22:                 printf("%d ist kein Schaltjahr.\n", jahr); 
23:         }
24:         else
25:             /* (3) ... handelt es sich um ein Schaltjahr(, da die erste Ausnahme nicht gilt.) */
26:             printf("%d ist ein Schaltjahr.\n", jahr);
27:     }
28:     else 
29:         printf("%d ist kein Schaltjahr.\n",  jahr);
30:
31:     return 0; 
32: }



Viele Grüße
Karl




Bezug
                
Bezug
C++ Schaltjahr: Antwort
Status: (Antwort) fertig Status 
Datum: 20:03 Mo 01.02.2010
Autor: Sigma

Hallo,

habe deine Code jetzt nicht geprüft. Es geht aber noch etwas kürzer.

Hier mal ein Pseudocode der auch prüft ob x ein Schaltjahr ist oder nicht.

If (((x Mod 4==0) AND (x Mod 100 <>0)) OR (x mod 400==0)) Then

x ist ein Schaltjahr

Else

x ist kein Schaltjahr

gruß sigma

Ps. Schau mal unter Wahrheitstabelle

Bezug
                        
Bezug
C++ Schaltjahr: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:47 Mo 01.02.2010
Autor: Karl_Pech

Hallo Sigma,


> If (((x Mod 4==0) AND (x Mod 100 <>0)) OR (x mod 400==0))
> Then
>  
> x ist ein Schaltjahr
>  
> Else
>  
> x ist kein Schaltjahr

> Ps. Schau mal unter Wahrheitstabelle


Ja, stimmt daran habe ich jetzt gar nicht gedacht:


0## 0
10# 1
110 0
111 1


  0 0  0 1  1 1  1 0
0                 1
1            1    1


A~B + AC


also:


((x % 4 == 0) && (x % 100 != 0)) || ((x % 4 == 0) && (x % 400 == 0))


Da 4 Teiler von 400 ist, gilt das, was du geschrieben hast:


((x % 4 == 0) && (x % 100 != 0)) || (x % 400 == 0)


Alternativ sollte dann aber auch (x % 4 == 0) && ((x % 100 != 0) || (x % 400 == 0)) richtig sein.



Viele Grüße
Karl



Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]