Zeitabfrage

sim4000

sim4000

Lebende Foren Legende
Hallo Leute.

Ich bin grad dabei mein erstes c++ script zu schreiben. Haben in der Schule damit angefangen.

Das proggie soll erst den Namen, dann das alter und dann die Uhrzeit abfragen.
Und dann je nach zeit und alter verschiedene Nachrichten ausgeben.

Code:
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
string name;
char antwort;

  do{
      cout << "Bitte gebe deinen Namen ein." << endl;
      cin >> name;
      cout << endl << name << " - Ist dein Name so korrekt? (j/n)" << endl;
      cin >> antwort; }

while (antwort != 'j');

string alter;
char antwort2;

  do{
      cout << endl << "Hallo " << name << ". Dann gib als nächstes mal bitte dein Alter ein." << endl;
      cin >> alter;
      cout << endl << "Bist du " << alter << " Jahre alt? (j/n)" << endl;
      cin >> antwort2;
      cout << endl; }

while (antwort2 != 'j');

string zeit;
char antwort3;

  do{
      cout << "Weisst du wie spät es ist? (zb. 16 45)" << endl;
      cin >> zeit;
      cout << "Es ist " << zeit << "Uhr." << "(j/n)" << endl;
      cin >> antwort3;
    }

while (antwort3 != 'j');

  return 0;
}

Bloß wie bekomme ich es hin das er die Zeit richtig abfragt und interpretiert?
Mfg, sim4000.
 
Das Interpretieren wirst Du schon selber vornehmen muessen. Du koenntest bei der Abfrage ein Format vorschlagen (z.B. 'hh:mm') und dann den String untersuchen (parsen). Das haengt allerdings auch davon ab, was Du mit 'interpretieren' meinst.

Zum Parsen: Ich wuerde wahrscheinlich erst testen, dass der string 4 oder 5 Zeichen enthaelt und an der dritt-letzten Stelle ein Doppelpunkt steht. Danach wuerde ich bei den Teilen rechts und links vom Doppelpunkt gucken, dass es korrekte Zahlen innerhalb gueltiger Werte sind.

Stichworte sind hier 'std::string::find' 'std::string::substr', 'std::istringstream'.
 
Mit interpretien mein ich:

Wenn man als zeit 12:15 eingibt, das dann die ausgabe die zwischen 12 und 13 uhr ausgegeben werden soll.

Mfg, sim4000.
 
Dann passt es ja:
1) Du suchst den Doppelpunkt mit pos=zeit.find(':')
2) Du isolierst die Stunde mit zeit.substr(0,pos)
3) Du konvertierst den resultierenden String mit atoi (C) oder istringstream (C++) in eine Zahl, die Du ausgeben kannst, wobei Du auf den 24h Zyklus achten musst.

ich weiss, das ist ein wenig wage, aber Du willst sicher selbst ein bisschen tuefteln.

P.S.: mit C/C++ schreibt man Programm, fuer Skripte sind Skriptsprachen wie Perl oder Bash zustaendig.
 
Mal sehn was die tipps bringen.
Und alles vorsagen bringt ja auch nix. Muss es ja für die schule irgendwann können. N bissl Google und n HowTO werden bestimmt helfen.

Danke für die Tipps.
Mfg, sim4000.
 

Ähnliche Themen

String auf Konsole ausgeben

Funktion nicht gefunden

Problem mit Texteingabe

deprecated conversion from string constant to ‘char*’

dynamische Speicherreservierung

Zurück
Oben