[英]C++ Program with pointers not working
我是一個初學者,被困住了。 我已經寫了這篇文章,到目前為止還行不通。 在“添加或刪除交易者”之后,它什么也不做。 任何幫助或花樣如何使這一功能將不勝感激。 謝謝。
#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;
}
以下條件始終被評估為true
; 即使是false || 'a'
false || 'a'
, '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
並且它是0
,您應該break
循環,以便它不會嘗試訪問索引0 - 1
元素:
cin >> choice;
if (choice == 0) break; // <-- THIS
首先代替
if(addOrRemove == 'A' || 'a'){
你應該寫
if(addOrRemove == 'A' || addOrRemove == 'a'){
其次,您應該定義變量count,因為似乎編譯器認為count是標准算法std :: count的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.