我需要帮助。我有一个10的数组,它由一个字符串和一个初始化它的值组成。我的问题是我如何要求用户输入要添加的内容或要删除的内容。然后显示更新的列表。 例如,选择valve,然后再添加2个,这将使其成为12,然后使用其他数组显示更新的数组。我还需要通过一个函数传递它。请提前感谢您的帮助,到目前为止我的代码。随意批评你们想要的人。它只会帮助我变得更好:)
#include <iostream>
#include <string>
#include <cstdlib>
#include <iomanip>
#include <cstring>
#include <string>
using namespace std;
//define Structure as invParts
struct invParts{
string name;
int qty;
};
void addparts(invParts *&c,int);
void removeparts(invParts *&c, int);
int main()
{
invParts *descrip;
int row = 0;
char choice;
invParts bin[10]= { {"valve",10}, {"Bearing",5}, {"Bushing",21},
{"Coupling",7}, {"Flange",5}, {"Gear",5},
{"Gear House", 5}, {"Vacuum Gripper", 25},
{"Cable",18}, {"Rod",12}, };
cout<<"-----------------------------------------------------" << endl;
cout<<"Part Description" << " " << "Number of parts in the bin" << endl;
cout <<"----------------------------------------------------" << endl;
cout << endl;
for(row = 0; row < 10; row++)
{
cout << setw(11)<< left <<bin[row].name << setw(25) << right << bin[row].qty<< endl;
}
cout << endl;
cout << "Here are 3 options" << endl;
cout << "Type A , to Add parts" << endl;
cout << "Type R , to Remove parts" << endl;
cout << "Type E, to Exit Program" << endl;
cout << "Choose your option: ";
cin >> choice;
cout << endl;
switch (choice)
{
int num;
case 'A' :
case 'a' : cout <<"You will now add" << endl;
addparts(descrip,num);
break;
case 'R':
case 'r': cout <<"You will now remove" << endl;
//removeparts(descrip,num);
break;
case 'E':
case 'e': cout<<"Now exiting program" << endl;
exit(0);
}
system("pause");
return 0;
}
void addparts(invParts *&c,int number)
{
string what;
int n;
cout <<"Which part? " << endl;
cin >> what;
//am i doing this right?
if ( what == "valve" || what == "Valve")
cout <<"How much do you want to add? "<<endl;
cin >> n;
}
/*void removeparts(invParts *&c, int)
{
//you guys can show me how to do the add, i can do the remove
}
*/
答案 0 :(得分:1)
您使用错误的数据结构来捕获广告资源。你需要像
这样的东西typedef std::map<std::string, int> Inventory;
这是您的计划的更新版本。
#include <iostream>
#include <string>
#include <iomanip>
#include <map>
using namespace std;
typedef std::map<std::string, int> Inventory;
void initializeInventory(Inventory& inv);
void displayInventory(Inventory const& inv);
void addparts(Inventory& inv);
void removeparts(Inventory& inv);
int main()
{
Inventory inv;
char choice;
initializeInventory(inv);
displayInventory(inv);
while ( true )
{
cout << "Here are 3 options" << endl;
cout << "Type A , to Add parts" << endl;
cout << "Type R , to Remove parts" << endl;
cout << "Type E, to Exit Program" << endl;
cout << "Choose your option: ";
cin >> choice;
cout << endl;
switch (choice)
{
case 'A' :
case 'a' : cout <<"You will now add" << endl;
addparts(inv);
break;
case 'R':
case 'r': cout <<"You will now remove" << endl;
//removeparts(inv);
break;
case 'E':
case 'e': cout<<"Now exiting program" << endl;
exit(0);
}
displayInventory(inv);
}
return 0;
}
void initializeInventory(Inventory& inv)
{
inv["Valve"] = 10;
inv["Bearing"] = 5;
inv["Bushing"] = 21;
inv["Coupling"] = 7;
inv["Flange"] = 5;
inv["Gear"] = 5;
inv["Gear House"] = 5;
inv["Vacuum Gripper"] = 25;
inv["Cable"] = 18;
inv["Rod"] = 12;
}
void displayInventory(Inventory const& inv)
{
cout<<"-----------------------------------------------------" << endl;
cout<<"Part Description" << " " << "Number of parts in the bin" << endl;
cout <<"----------------------------------------------------" << endl;
cout << endl;
for (auto item : inv )
{
cout << setw(15) << left << item.first << setw(25) << right << item.second << endl;
}
cout << endl;
}
void addparts(Inventory& inv)
{
string what;
int n;
cout <<"Which part? " << endl;
cin >> what;
//am i doing this right?
Inventory::iterator iter = inv.find(what);
if ( iter == inv.end() )
{
cout << "There is no such part in the inventory.\n";
return;
}
cout <<"How much do you want to add? "<<endl;
cin >> n;
iter->second += n;
}
void removeparts(Inventory& inv)
{
// ????
}
更新
可以使用以下方式初始化库存:
Inventory inv = { {"Valve",10}, {"Bearing",5}, {"Bushing",21},
{"Coupling",7}, {"Flange",5}, {"Gear",5},
{"Gear House", 5}, {"Vacuum Gripper", 25},
{"Cable",18}, {"Rod",12} };
无需单独的功能来初始化库存。