Menüsteuerung Datum und Geometrie
-
Guten Tag ich bin neu hier im Forum und entschuldige mich jetzt schon falls ich im falschen Bereich gepostet habe.
Meine Frage: und zwar muss ich eine Menüsteuerung programmieren.Der Benutzer muss ein Datum in der Form „x.xx.xxxx“ eingeben und bekommt dann gesagt, ob das Datum korrekt ist.
Bei der Auswahl von „Geometrie“ kann der Benutzer eine positive ganze Zahl n eingeben. Es
wird dann ein Karo aus 2n-1 Zeilen ausgegeben. Für n==4 ergibt sich z.B. folgende Ausgabe:
*
***
*****
*******
*****
***
*Wie kann ich das realisieren?
Ich hoffe ihr könnt mir helfen.
Mfg
-
Ansatz?
-
#include <iostream>
using namespace std;int main()
{
char menuesteuerung = '\0';int tag = 0;
int monat = 0;
int jahr = 0;
bool run = true;while (run == true)
{cout << "Druecken Sie um in die Menuepunkte zu gelangen [D] fuer Datum, [G] fuer Geometrie und [E] fuer Ende! " << endl;
cin >> menuesteuerung;switch (menuesteuerung)
{
case '\D':
cout << "Geben Sie bitte ein Datum ein! " << endl;cout << tag << "." << monat << "." << jahr << endl;
break;case '\G':
case '\E':
default:
cout << " Korrigieren Sie ihre Eingabe! " << endl;
}
}system("pause");
return 0;
}
-
hoffe ihr könnt mir helfen
-
Nutze eigene Funktionen.
Der \ bei '\0' leitet eine Escapesequence ein. Da direkt nach dem \ eine Ziffer kommt wird der numerische Wert des Zeichens als Oktalwert angegeben.
In diesem Fall ist es Null.
Du kannst als auchchar menuesteuerung = 0;schreiben (achte auf die nicht vorhandenen Hochkommas.Es gibt noch andere Codes.
\D \G und \E gehören aber nicht dazu.
-
#include <iostream>
using namespace std;int main()
{
char menuesteuerung =0;
char punkt = 0;
int tag = 0;
int monat = 0;
int monat30 = 0;
int jahr = 0;
bool run = true;
char datum[12];
bool fehler = false;while (run == true)
{cout << "Druecken Sie um in die Menuepunkte zu gelangen [D] fuer Datum, [G] fuer Geometrie und [E] fuer Ende! " << endl;
cin >> menuesteuerung;switch (menuesteuerung)
{
case '\D':
cout << "Geben Sie bitte ein Datum ein! " << endl;
cin >> tag >> punkt >> monat >> punkt >> jahr;int monat[5] = { 2, 4, 6, 9, 11 };
if ((monat[3] == 0 && (monat[4] >= 1 && monat[4] <= 9)) || (monat[3] == 1 && monat[4] >= 0 || monat[4] <= 2))
bool fehler = false;if (monat[5] == 2 && (tag < 1 && tag > 28))
bool fehler = true;
else
for (int i = 0; i < 5; i++)
{if (monat[i] = monat && (tag > 30 && tag < 1))
bool fehler = true;else
if (!(monat[i] = monat && (tag >31 && tag < 1)));}
if (jahr>1581 && jahr % 4 == 0 && monat[5] == 2 && tag == 29 && jahr % 400 != 0)
fehler = false;
if (fehler == true)
cout << "Datum falsch" << endl;
if (fehler == false)
cout << "Datum korrekt" << endl;break;
}
}system("pause");
return 0;
Also mein Programm scheint ansatzweise zu laufen nur leider spuckt er mir entweder Datum korrekt ein oder er geht in eine Endlosschleife.
Hoffe Ihr könnt mir helfenMfg
-
mc522 schrieb:
Also mein Programm scheint ansatzweise zu laufen
Nö
mc522 schrieb:
nur leider spuckt er mir entweder Datum korrekt ein
??? unverständlicher Satz
mc522 schrieb:
oder er geht in eine Endlosschleife.
Du setzt ja auch nie run auf false
Was bezweckst du mit Zeile 33?
Warum hast du zwei Variablen mit dem Namen monat?Bei Arrays beginnt der Index bei 0 und bei der Definition wird die Anzahl der Element angegeben.
Wenn du also ein Array mit fünf Elmenten hast, das geht der Index von 0 bis 4. (Zeile 36)
Mein Hinweis mit den Escapesequencen gilt immer noch.
Nimm beim nächsten mal die Code-Tags für den Code. (Code mit der Masu markieren und auf den C++ button unter den
:p klicken)