2016-06-26 9 views
-4

Ich bin ein Student und bin mit der Erstellung eines Programms beauftragt, das bestimmen wird, ob eine Person reich ist oder nicht. Mein Code ist unten und ich bekomme immer einen Fehler, identifier "isRich" is undefined. Kann mir jemand helfen, herauszufinden, wo ich falsch gelaufen bin?Undefinierter Bezeichner, der versucht, eine Funktion zu schreiben

#include "stdafx.h" 
#include <iostream> //for input and output 
#include "Cusick Project 5.h" 
using namespace std; 


void calcWealth(int age, long cash, int dependants, long debt) 
{ 

cout << "Please enter your age: "; 
cin >> age; 
cout << "Please enter the amount of cash on hand: "; 
cin >> cash; 
cout << "Please enter the amount of dependents you have: "; 
cin >> dependants; 
cout << "Please enter the amount of money you owe"; 
cin >> debt; 

bool isRich(int *age, long *cash, int *dependants, long *debt); 
{ 
    long trueCash; 
    bool status = false; 

    trueCash = cash - debt; 

    if (dependants == 0) 
    { 
     if (trueCash >= 1000000) 
     { 
      status = true; 
     } 
     else 
      status = false; 
    } 

    else if (age < 40) 
    { 
     trueCash = trueCash - (dependants * 150000); 
     if (trueCash >= 1000000) 
     { 
      status = true; 
     } 
     else 
      status = false; 
    } 

    else if (age > 39 && age < 51) 
    { 
     trueCash = trueCash - (dependants * 75000); 

     if (trueCash >= 1000000) 
     { 
      status = true; 
     } 
     else 
      status = false; 
    } 

    else 
    { 
     trueCash = trueCash - (dependants * 25000); 

     if (trueCash >= 1000000) 
     { 
      status = true; 
     } 
     else 
      status = false; 
    } 
    } 
} 

int main() 
{ 
    int age; 
    long cash; 
    int dependants; 
    long debt; 
    bool status; 

    cout << "Welcome to the wealth indicator..." << endl; 

    calcWealth(age, cash, dependants, debt); 

    if (isRich(status) = true) 
    { 
     cout << "Congratulations! We consider you as being \"rich.\"" <<  endl; 
    } 

    else 
    { 
     cout << "I am sorry! You are not yet \"rich.\"" << endl; 
    } 
} 
+2

Übrigens sollten Sie eine Frage nicht mit unnötigen Anweisungen Ihres Auftrags verschmutzen. –

+0

Nachdem Sie die fehlenden '}' geschweiften Klammern und die Umleitungen in 'isRich' korrigiert haben, beachten Sie, dass Sie' iseRich' so definieren, dass sie 4 Argumente annimmt, aber nur mit 1 aufruft. Außerdem wird keine der lokalen Variablen in 'main' initialisiert da 'status' nie gesetzt wird und die anderen nach 'calcWealth' übergeben werden. – dxiv

+0

Ich gebe Ihnen kostenlose Beratung schreiben Sie Ihren Code erneut. Wenn Sie das nach jeder geschriebenen Zeile tun, schreiben Sie 'cout <<" \ nSOMETHING \ n ";' kompilieren Sie und sehen Sie, was passiert ist und ob es korrekt kompiliert wird. Das, wie Sie tatsächlich lernen können, Arbeitscode zu machen. – Logman

Antwort

1

Sie haben ein zusätzliches Semikolon nach der Erklärung der isRich().

Der Code sollte stattdessen wie folgt aussehen:

...  
bool isRich(int *age, long *cash, int *dependants, long *debt) 
{ 
... 

Auch Sie sind ein Schließ } am Ende der Funktion calcWealth() direkt vor der Deklaration von isRich() fehlt.

+0

@Jaime, wenn dies Ihre Frage beantwortet, können Sie es akzeptieren, indem Sie auf das Häkchen neben der Frage klicken? – Alex

+1

Haben Sie versucht, seinen Code zu kompilieren? Es ist zu viel Unordnung, nur Semikolon-Problem zu reparieren. Für Beispiel er übergibt das Alter als Zeiger und benutzt es als Wert. – Logman

+0

@Logman Es ist tatsächlich ein Durcheinander, aber das Semikolon und die schließende Klammer fixieren das unmittelbare Problem, über das er fragte. – Alex

0

Minus die cin Aussagen, Ihre ersten Zeilen aussehen

void calcWealth(int age, long cash, int dependants, long debt) 
{ 

// ... 

bool isRich(int *age, long *cash, int *dependants, long *debt); 
{ 

aber man kann nicht starten isRichinnerhalbcalcWealth erklärt. Sie müssen dem Compiler mitteilen, dass die erste Funktion beendet ist, mit einer }.

BTW diese Funktion wird sowieso nicht das tun, was Sie wollen - die Werte, die es liest, gehen verloren - aber das ist eine andere Frage.

Als Referenz, wenn Sie einen Kompilierungsfehler haben, kommt es mit einer Zeilennummer. Wenn Sie nicht anzeigen, in welcher Zeile es fehlschlägt, fragen Sie alle nach Erraten Sie etwas, das der Compiler Ihnen bereits gesagt hat.

+0

Vielen Dank für die Informationen - ich werde sicher sein, es beim nächsten Mal zu berücksichtigen. – Jaime