web-dev-qa-db-fra.com

Système non déclaré dans la portée?

Je connais son code simple, comment puis-je résoudre le problème "Système non déclaré dans la portée"?

#include<iostream>
using namespace std;

int main(void)
{
    system ( "TITLE Calculator" );
    system ( "COLOR 2" );
    char cChar;
    double dfirstnumber;
    double dsecondnumber;
    char cDoagain;

    do
    {
        system("CLS");
        cout << "Please enter the first number you would like to use."<< endl;
        cin >> dfirstnumber;
        cout<< "Please enter the operation you would like to perform." << " (+,-,*,or /)" << endl;
        cin >> cChar;
        cout<< "Please enter the second number you would like to use." << endl;
        cin >> dsecondnumber;

        switch (cChar)
        {
            case '+':
                cout << "The answer is: " << dfirstnumber << "+" << dsecondnumber << "=" <<
                (dfirstnumber + dsecondnumber) << endl;
                break;
            case '-':
                cout << "The answer is: " << dfirstnumber << "-" << dsecondnumber << "=" <<
                (dfirstnumber - dsecondnumber) << endl;
                break;
            case '*':
                cout << "The answer is: " << dfirstnumber << "*" << dsecondnumber << "=" <<
                (dfirstnumber * dsecondnumber) << endl;
                break;
            case 'x':
                cout << "The answer is: " << dfirstnumber << "x" << dsecondnumber << "=" <<
                (dfirstnumber * dsecondnumber) << endl;
                break;
            case 'X':
                cout << "The answer is: " << dfirstnumber << "X" << dsecondnumber << "=" <<
                (dfirstnumber * dsecondnumber) << endl;
                break;
            case '/':
                if(dsecondnumber == 0){
                cout<< "That is an invalid operation." << endl;}
                else{
                cout << "The answer is: " << dfirstnumber << "/" << dsecondnumber << "=" <<
                (dfirstnumber / dsecondnumber) << endl;

        }
                break;
                default:
                    cout << "That is an invalid operation." << endl;
                    break;
    }
                cout << "Would you like to start again? (Y/N)" << endl;
                cin >>  cDoagain;
    }while (cDoagain == 'Y' or cDoagain == 'y');
    system("PAUSE");
    return 0;
}

Voici mon message final:

C:\Documents and Settings\Nilo\My Documents\Work\Testing\main.cpp || Dans la fonction 'int main ()': | Erreur C:\Documents and Settings\Nilo\My Documents\Work\Testing\main.cpp | 8 |: le système n'a pas été déclaré dans cette étendue ||

| === Build terminé: 1 erreurs, 0 avertissements === |

18
Nilo Cortex

Vous devez ajouter:

 #include <cstdlib>

afin que le compilateur puisse voir le prototype de system().

54
Paul R

Il est probable que vous n'ayez pas inclus le fichier d'en-tête qui déclare system().

Pour pouvoir compiler du code C++ qui utilise des fonctions que vous ne déclarez pas (manuellement) vous-même, vous devez extraire les déclarations. Ces déclarations sont normalement stockées dans des fichiers dits d'en-tête que vous extrayez dans l'unité de traduction actuelle à l'aide de la directive de préprocesseur #include. Comme le code ne contient pas #include Le fichier d'en-tête dans lequel system() est déclaré, la compilation échoue.

Pour résoudre ce problème, recherchez le fichier d'en-tête qui vous fournit la déclaration de system() et incluez-la. Comme mentionné dans plusieurs autres réponses, vous souhaiterez probablement ajouter #include <cstdlib>

13
Timo Geusch