0

私は初心者で、行き詰まっています。私はこれを書いていますが、これまでのところ機能していません。「トレーダーの追加または削除」の後、何もしません。これを機能させる方法についてのヘルプやヒントは大歓迎です。ありがとうございました。

#include<iostream>
#include<iomanip>
#include<string>
using namespace std;

struct Department{
string deptName;
int numTraders;     
};

void addTraders(Department *, int );
void removeTraders(Department *, int);

int main(){

char addOrRemove;
Department departments[10] = {
    {"Bank Loan", 10},
    {"Conservative Allocation", 9},
    {"Europe Stock", 10},
    {"Domestic", 21},
    {"Asia", 10},
    {"Large Growth", 5},
    {"Long-term Bond", 5},
    {"Money Market", 25},
    {"Emerging Market", 18},
    {"Large Blend", 12}
};

int choice, numberToAdd, numberToRemove;

Department* p_departments = departments;

for(int i = 0; i < 10; i++){
    cout << "Department # " << (i + 1) << ", Name: " << p_departments[i].deptName <<
        ", Traders: " << p_departments[i].numTraders << endl;
}
cout << endl;

do{

cout << "Enter 0 to quit, or choose a department number: ";
cin >> choice;

cout << "Add or remove traders (A or R) ? ";
cin >> addOrRemove;

if(addOrRemove == 'A' || 'a'){
    cout << "how many traders to add" << endl;
    cin >> numberToAdd;
    addTraders(&departments[choice-1] ,numberToAdd);
}
else if(addOrRemove == 'R' || 'r'){
    cout << "how many traders to remove" << endl;
    cin >> numberToRemove;
    removeTraders(&departments[choice-1],numberToRemove);
}
else{
    cout << addOrRemove << " is not a valid selection. \n";
}

for(int i = 0; i < 10; i++){
    cout << "Department # " << (i + 1) << ", Name: " << p_departments[i].deptName <<
        ", Traders: " << p_departments[i].numTraders << endl;
}
cout << endl;

}while(count != 0);

system("pause");
return 0;
}

void addTraders(Department *dept, int numAdd){

dept->numTraders += numAdd;
}

void removeTraders(Department *dept, int numRemove){

dept->numTraders += numRemove;
} 
4

2 に答える 2

0

次の条件は、常に次のように評価されtrueます。false || 'a'であっても'a'~> true:

if(addOrRemove == 'A' || 'a'){ ...

それは次のように意図されていました:

if(addOrRemove == 'A' || addOrRemove == 'a'){ ...

ただし、addOrRemoveが として宣言されている場合は、次のようcharになります。

cin >> addOrRemove;

改行文字または空白を読み取るだけかもしれません。addOrRemoveとして宣言しstd::string、条件を次のように変更する方がおそらくより合理的です。

if(addOrRemove == "A" || addOrRemove == "a"){ ...

choiceそして、それを読んだ後は、 index の要素にアクセスしようとしないようにループ0する必要があります。break0 - 1

cin >> choice;
if (choice == 0) break;   // <-- THIS
于 2013-10-17T23:16:26.990 に答える