Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

41

03.12.2007, 21:47

Jo, was sollte der auch sonnst machen ^^ entweder aus exit nen bool machen (dann sind 0 und 1 gültige Eingaben), oder auch deine Schleife anpassen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
else if (userchoice == 4) // Beenden

{
    std::cout << "\nWirklich beenden?\n (1) Ja\n (2) Nein\n";
    while  (!(std::cin >> exit) || exit > 2 || exit < 1)
    {
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        std::cout << "\nUngueltige Eingaben!\n";
    }
}
...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

42

04.12.2007, 17:20

aja thx...
nächstes Prob...
wollte einen countdown reinmachen. Der benutzer sollte eine Zahl eingeben und nach Ablauf fährt der PC herunter:
Nur die sleep funktion geht nicht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include "stdafx.h"
#include <iostream> 
#include <limits>
#include <stdlib.h>
using namespace std;

int main() 
{ 
  float calc1 = 0.0f, calc2 = 0.0f;                             // Berechnungsvariablen 

  int userchoice = 0, userchoice2 = 0, exit = 0, countdown; // Menuvariable //Schleifenvariable //Countdownvariable

  
  cout << "Willkommen beim RPRAXOR\nDies ist ein Programm in dem Sie Berechnungen durchfuehren, und ihren PC nach einer\nbestimmten Zeit herunterfahren koennen!\n";
  while (exit != 1) 
  { 
    cout << "______________________________\n\nBitte Waehlen Sie aus!\n\n (1) Rechnen\n (2) Countdown timer zum beenden von Windows starten\n (3) Hilfe\n (4) Credits\n (5) Beenden\n"; 
    cin >> userchoice; // Nutzereingabe 

    while (! cin ) // Nutzereingabe wiederholen, wenn sie nicht korrekt war 

    { 
      cin.clear(); 
      cin.ignore(numeric_limits<streamsize>::max(), '\n'); 
      cout << "\nNur 1, 2, 3 und 4 sind gueltige Eingaben!\n"; 
      cin >> userchoice; 
    } 

    if (userchoice == 2)
    {
    //Countdown timer

cout << "Bitte geben Sie eine Zahl ein um den Countdown zu starten: ";
    cin >> countdown;
    
    //Countdown abzählen

    for (int i=countdown; i>=0; i--)
    {
        cout << "Noch " << i << " Sekunden" << endl;
        Sleep (1000);
        
    }

        system("C:\\WINDOWS\\System32\\shutdown.exe -s -f -t 0 ");
    }
  
    if (userchoice == 1) // Rechnen 

    { 
      cout << "\n (1) Addieren\n (2) Subtrahieren\n (3) Multiplizieren\n (4) Dividieren\n"; 
      cin >> userchoice2; 
      while (! cin ) // Nutzereingabe wiederholen, wenn sie nicht korrekt war 

      { 
        cin.clear(); 
        cin.ignore(numeric_limits<streamsize>::max(), '\n'); 
        cout << "\nNur 1, 2, 3 und 4 sind gueltige Eingaben!\n"; 
        cin >> userchoice2; 
      } 
      if (userchoice2 == 1) // Addieren 

      { 
        cout << "\nAddieren:"; 
        cout << "\nErste Zahl eingeben: ";
        cin >> calc1;
        cout << "Zweite Zahl eingeben: ";
        cin >> calc2;
        while (! cin) 
        { 
          cin.clear(); 
          cin.ignore(numeric_limits<streamsize>::max(), '\n'); 
          cout << "\nNur Dezimalzahlen (Trennzeichen '.') sind gueltige Eingaben!\n"; 
          cout << "\nErste Zahl eingeben: ";
        cin >> calc1;
        cout << "Zweite Zahl eingeben: ";
        cin >> calc2;
        } 
        cout << "\nErgebnis: " << (calc1 - calc2) << "\n" << endl; 
      } 
      else if (userchoice2 == 2) // Subtrahieren 

      { 
        cout << "\nSubtrahieren:"; 
        cout << "\nErste Zahl eingeben: ";
        cin >> calc1;
        cout << "Zweite Zahl eingeben: ";
        cin >> calc2;
        while (! cin) 
        { 
          cin.clear(); 
          cin.ignore(numeric_limits<streamsize>::max(), '\n'); 
          cout << "\nNur Dezimalzahlen (Trennzeichen '.') sind gueltige Eingaben!\n"; 
          cout << "\nErste Zahl eingeben: ";
          cin >> calc1;
          cout << "Zweite Zahl eingeben: ";
          cin >> calc2;
        } 
        cout << "\nErgebnis: " << (calc1 - calc2) << "\n" << endl; 
      } 
      else if (userchoice2 == 3) //Multiplizieren

      {
          cout << "\nMultiplizieren:";
          cout << "\nErste Zahl eingeben: ";
          cin >> calc1;
          cout << "Zweite Zahl eingeben: ";
          cin >> calc2;
          while (! cin)
          {
              cin.clear();
              cin.ignore(numeric_limits<streamsize>::max(), '\n');
              cout << "\nNur Dezimalzahlen (Trennzeichen '.') sind gueltige Eingaben!\n";
              cout << "\nErste Zahl eingeben: ";
              cin >> calc1;
              cout << "\nZweite Zahl eingeben: ";
              cin >> calc2;
          }
          cout << "\nErgebnis: " << (calc1 * calc2) << "\n" << endl;
        }
        else if (userchoice2 == 4) //Dividieren

        {
          cout << "\nDividieren:";
          cout << "\nErste Zahl eingeben: ";
          cin >> calc1;
          cout << "Zweite Zahl eingeben: ";
          cin >> calc2;
          while (! cin)
          {
              cin.clear();
              cin.ignore(numeric_limits<streamsize>::max(), '\n');
              cout << "\nNur Dezimalzahlen (Trennzeichen '.') sind gueltige Eingaben!\n";
              cout << "\nErste Zahl eingeben: ";
              cin >> calc1;
              cout << "\nZweite Zahl eingeben: ";
              cin >> calc2;
          }
          cout << "\nErgebnis: " << (calc1 / calc2) << "\n" << endl;
      }
      else // Ungueltige Eingabe! 

      { 
        cout << "Ungueltige Eingabe!\n"; 
      } 
    } 
    else if (userchoice == 3) // Hilfe 

    { 
      cout << "\nHILFE: \n (1) Rechenvorgang starten\n (2) Hilfe anzeigen\n (3) Informationen anzeigen \n (4) Programm beenden\n\n   Bitte bei den Rechnungen die Dezimalzahlen MIT einem Punkt\n   und KEINEM Komma trennen!!\n"; // klar ;) 

    } 
    else if (userchoice == 4) // Credits 

    { 
      cout << "\nINFO: \n(c) by Uwe Collmer\nhttp://uwe-collmer.de\nhttp://game-community.org\n\nThanks for downloading and using\nVersion 1.0\nMade in about 5 hours\n(Il)legal copys are allowed\n\nPlease send bugreports or questions to uwe@collmer.net\n"; 
    } 
    else if (userchoice == 5) // Beenden 

{ 
    cout << "\nWirklich beenden?\n (1) Ja\n (2) Nein\n"; 
    while  (!(cin >> exit) || exit > 2 || exit < 1) 
    { 
        cin.clear(); 
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
        cout << "\nNur 1 und 2 sind gueltige Eingaben!\n"; 
        cin >> exit;
    }
    
  } 
  return 0; 
}

Weiß jmd. warum?
lg
//edit: hab dein Befehl eingefügt und jetzt kommt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
1>------ Neues Erstellen gestartet: Projekt: rechnen2, Konfiguration: Debug Win32 ------
1>Die Zwischen- und Ausgabedateien für das Projekt "rechnen2" mit der Konfiguration "Debug|Win32" werden gelöscht.
1>Kompilieren...
1>stdafx.cpp
1>Kompilieren...
1>rechnen2.cpp
1>c:\dokumente und einstellungen\uwe\eigene dateien\visual studio 2005\rechnen2\rechnen2\rechnen2.cpp(35) : error C3861: "Sleep": Bezeichner wurde nicht gefunden.
1>c:\dokumente und einstellungen\uwe\eigene dateien\visual studio 2005\rechnen2\rechnen2\rechnen2.cpp(156) : fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" in "c:\dokumente und einstellungen\uwe\eigene dateien\visual studio 2005\rechnen2\rechnen2\rechnen2.cpp(8)" gefunden wurde
1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Uwe\Eigene Dateien\Visual Studio 2005\rechnen2\rechnen2\Debug\BuildLog.htm" gespeichert.
1>rechnen2 - 2 Fehler, 0 Warnung(en)
========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

43

04.12.2007, 18:39

Für Sleep solltest du windows.h einbinden.

Du solltest dich aber ernsthaft fragen, was so ein Countdown in einem Rechnenprogramm zu suchen hat!

Dann wäre da noch zu erwähnen, dass du evtl. mit dem Ergebnis deiner Lösung nicht ganz zufrieden sein wirst^^

44

04.12.2007, 21:03

Ich hab vor, dass dann immer zu erweitern, sodass ich später ein rießiges Tool hab.
Soll heißen, dass ich dann auch Spiele etc. einfügen will.

Ist eigentlich eher zur Übung und zum Interesse als zum Zweck...

lg

45

05.12.2007, 16:49

Der eine Fehler behoben!
Nach dem einbinden von
#include <windows.h>
kommt

Quellcode

1
>c:\programme\visual studio\myprojects\proggi\p1.cpp(4) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "windows.h": No such file or directory


? ? ?
lg

46

05.12.2007, 17:14

Hast du #include "windows.h" statt #include <windows.h> geschrieben?
Ansonsten Pfadangabe in den Projekteinstellungen eintragen

47

05.12.2007, 20:03

ne hab ich nicht

wie kann ich pfadeingaben im projekt schreiben?
lg

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

48

05.12.2007, 20:06

Öhm hast du das PlattformSDK installiert und eingerichtet?

49

05.12.2007, 20:07

Unter Projekteigenschaften -> C++ -> Zusätzliche Includeverzeichnisse
den Pfad zum Platform SDK (oder zu was immer du verwendest) angeben

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

50

05.12.2007, 20:47

Erstmal muss er es installieren (ich würd nicht die Vers. nehmen, die VC6.0 mitinstalliert hat)

Ich würde aber jetzt einfach mal raten, das noch nen Moment zurückzustellen und das Buch weiter durchzuarbeiten. Es ist noch nen bisschen früh, um wegen dieser Sleepfunktion und dem P-SDK gleich mal den ganzen Lernprozess zu unterbrechen.

Werbeanzeige