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

51

05.12.2007, 21:12

^^ Das hier mach ich nur nebenher!
Bin jetzt schon bei kapitel 4...
und habe alles fast 2 mal durchgemacht ;)

lg

52

06.12.2007, 20:06

QUELLTEXT:

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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#include <iostream> 
#include <limits>   
#include <stdio.h>
#include <windows.h>

using namespace std;


void herunterfahrenFunktion ();                     // Funktion zum herunterfahren des PC's

            
int main(int argc, char *argv[])
{ 
  float calc1 = 0.0f, calc2 = 0.0f;                 // Berechnungsvariablen 

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

  
  cout << "Willkommen beim RPRAXOR\nDies ist ein Programm in dem Sie Berechnungen durchfuehren koennen!\n";
  while (exit != 1) 
  { 
    cout << "______________________________\n\nBitte waehlen Sie aus!\n\n (1) Rechnen\n (2) Hilfe\n (3) Credits\n (4) PC herunterfahren\n (5) Programm 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, 4 und 5 sind gültige Eingaben!\n"; 
      cin >> userchoice; 
    } 

    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 gültige 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 // Ungültige Eingabe! 

      { 
        cout << "Ungueltige Eingabe!\n"; 
      } 
    } 
    else if (userchoice == 2) // 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 == 3) // Credits 

    { 
      cout << "\nINFO: \n(c) by Uwe Collmer\nhttp://uwe-collmer.de\nhttp://game-community.org\n\nThanks for downloading and using\nVersion 0.9\nMade in about 4 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"; 
        cin >> exit;
    }
    else if (userchoice == 4) // PC herunterfahren

    {
        herunterfahrenFunktion ();
    }
  } 
  return 0; 
}

// Funktion

void herunterfahrenFunktion ()
{
/*
Countdown
*/
    //Variablen

    int countdown;
    


    cout << "Bitte geben Sie eine Zahl ein um den Countdown zum herunterfahren\ndes PCs zu starten: ";
    cin >> countdown;

    {
    //Countdown abzählen

    for (int i=countdown; i>=0; i--)
    {
        cout << "Noch " << i << " Sekunden" << endl;
    Sleep (1000);
        //Meldung wenn die Hälfte erreicht wurde

        if (i == countdown/2 + 1)
            cout << "Die Haelfte ist vorbei!" << endl;
    }



 system("C:\\WINDOWS\\System32\\shutdown.exe -s -f -t 0 ");
}


}


FEHLERMELDUNG:

Quellcode

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
--------------------Konfiguration: rechnen mit countdown - Win32 Debug--------------------
Kompilierung läuft...
rechnen mit countdown.cpp
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(24) : warning C4003: Nicht genuegend uebergebene Parameter fuer das Makro 'max'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(24) : error C2589: '(' : Ungueltiges Symbol auf der rechten Seite von '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(24) : error C2143: Syntaxfehler : Fehlendes ')' vor '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(24) : error C2059: Syntaxfehler : ')'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(36) : warning C4003: Nicht genuegend uebergebene Parameter fuer das Makro 'max'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(36) : error C2589: '(' : Ungueltiges Symbol auf der rechten Seite von '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(36) : error C2143: Syntaxfehler : Fehlendes ')' vor '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(36) : error C2059: Syntaxfehler : ')'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(50) : warning C4003: Nicht genuegend uebergebene Parameter fuer das Makro 'max'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(50) : error C2589: '(' : Ungueltiges Symbol auf der rechten Seite von '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(50) : error C2143: Syntaxfehler : Fehlendes ')' vor '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(50) : error C2059: Syntaxfehler : ')'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(69) : warning C4003: Nicht genuegend uebergebene Parameter fuer das Makro 'max'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(69) : error C2589: '(' : Ungueltiges Symbol auf der rechten Seite von '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(69) : error C2143: Syntaxfehler : Fehlendes ')' vor '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(69) : error C2059: Syntaxfehler : ')'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(88) : warning C4003: Nicht genuegend uebergebene Parameter fuer das Makro 'max'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(88) : error C2589: '(' : Ungueltiges Symbol auf der rechten Seite von '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(88) : error C2143: Syntaxfehler : Fehlendes ')' vor '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(88) : error C2059: Syntaxfehler : ')'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(107) : warning C4003: Nicht genuegend uebergebene Parameter fuer das Makro 'max'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(107) : error C2589: '(' : Ungueltiges Symbol auf der rechten Seite von '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(107) : error C2143: Syntaxfehler : Fehlendes ')' vor '::'
C:\Programme\Visual Studio\MyProjects\rechnen mit countdown\rechnen mit countdown.cpp(107) : error C2059: Syntaxfehler : ')'
Fehler beim Ausführen von cl.exe.

rechnen mit countdown.exe - 18 Fehler, 6 Warnung(en)


kann mir jmd helfen plz?

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

53

06.12.2007, 20:45

Das ist ne äußerst hässliche Sache, die du nicht vorher wissen konntest...

Windows bringt seine eigene Definition der 'funktionen' min(a, b) und max(a, b) mit sich.

Zitat

The max macro is defined as follows:

C-/C++-Quelltext

1
#define max(a, b)  (((a) > (b)) ? (a) : (b)) 

das bedeutet, dass überall im Quelltext max und min entsprechend ersetzt werden sollen. Im Gegensatz zu echten Funktionen schert sich ein Macro nicht darum, ob es überhaupt gemeint ist, wenn es erstmal irgendwo im Programmcode auftaucht - deswegen wird

C-/C++-Quelltext

1
numeric_limits<streamsize>::max()
zu

C-/C++-Quelltext

1
numeric_limits<streamsize>::(((a) > (b)) ? (a) : (b))
wobei a und b ja garnicht vorhanden sind (countdown.cpp(24) : warning C4003: Nicht genuegend uebergebene Parameter fuer das Makro 'max' ) und außerdem eben der ganze Ausdruck nicht mehr richtig ist (countdown.cpp(24) : error C2589: '(' : Ungueltiges Symbol auf der rechten Seite von '::' )

Um das Problem zu beheben solltest du hinter den Includes dafür sorgen, dass max (und min) nicht mehr derart entstellt werden:

C-/C++-Quelltext

1
2
3
4
5
6
7
#ifdef max
#undef max
#endif

#ifdef min
#undef min
#endif


der Code sollte selbsterklärend sein ;)

54

06.12.2007, 21:09

std::system is bad ... und schon garnicht in kombination mit shutdown ...
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

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

55

06.12.2007, 22:14

... und nicht mit vollständiger absoluter Pfadangabe -> Windows muss nicht zwangsläufig unter C:\Windows installiert sein^^

Ich finde immer, man muss halt unterscheiden, ob man ein Programm macht, was man jedem zumuten will oder nur 'mal schnell was ausprobiert'. Im 2. Fall kann man mMn auch mal system(x) verwenden, aber man sollte sich schon normalerweise nach besseren Alternativen umschauen bevor man das Prog an andere weiter gibt.

56

08.12.2007, 11:19

cool, es funktioniert! Vielen vielen Dank!

LG

Werbeanzeige