c++ - C++:将数据保存在并行数组中
问题描述
我是 C++ 新手,我在使用并行数组时遇到了一些麻烦。在我为家庭作业编写的这个函数中,我们将创建一个基于菜单的输入来输入书籍数据。图书数据将存储在各种并行数组中,即一个用于标题,一个用于 ISBN,一个用于作者等。
我的问题是,在这个 do-while 循环结束时,用户刚刚输入的数据将被保存到数组的下一个条目中。但它似乎只是覆盖了最后一个条目(或者它只写入数组的最后一个条目,我不确定)。我在数组中使用循环 cout 语句进行测试,我得到的只是最后一个条目......任何正确方向的指针都会很棒,谢谢!
抱歉,如果格式在代码上被破坏,这也是我第一次在 stackoverflow 上发帖。
void addBook (string bookTitle [], string isbn [], string author [], string publisher [], string dateAdded [], int qtyOnHand [], double wholesale [], double retail [], int& bookCount)
{
int userChoice = -1;
int pos = 0;
int len = 30;
string tempBookTitle = "EMPTY";
string tempISBN = "EMPTY";
string tempAuthor = "EMPTY";
string tempPublisher = "EMPTY";
string tempDateAdded = "EMPTY";
int tempQtyOnHand = 0;
double tempWholesale = 0;
double tempRetail = 0;
int bookIndex = 0;
do
( {
system ("CLS");
cout << "******************************************************************************" << endl
<< "* SERENDIPITY BOOKSELLERS *" << endl
<< "* ADD BOOK *" << endl
<< "* DATABASE SIZE: " << setw (8) << DBSIZE << "CURRENT BOOK COUNT: " << setw (8) << bookCount << " *" << endl
<< "* *" << endl
<< "* --PENDING VALUES-- *" << endl
<< "* *" << endl
<< "* <1> Enter Book Title > " << setw (37) << tempBookTitle.substr (pos, len) << "*" << endl
<< "* <2> Enter ISBN > " << setw (37) << tempISBN << "*" << endl
<< "* <3> Enter Author > " << setw (37) << tempAuthor << "*" << endl
<< "* <4> Enter Publisher > " << setw (37) << tempPublisher << "*" << endl
<< "* <5> Enter Date Added (MM/DD/YYYY) > " << setw (37) << tempDateAdded << "*" << endl
<< "* <6> Enter Quantity on Hand > " << setw (37) << tempQtyOnHand << "*" << endl
<< "* <7> Enter Wholesale Price > " << setw (37) << tempWholesale << "*" << endl
<< "* <8> Enter Retail Price > " << setw (37) << tempRetail << "*" << endl
<< "* <9> Save Book to Database *" << endl
<< "* <0> Return to Inventory Menu *" << endl
<< "* *" << endl
<< "******************************************************************************" << endl
<< " CHOICE (0-9): ";
)
cin >> userChoice;
while (cin.fail () || userChoice < 0 || userChoice > 9)
{
cout << "Please input correct OPTION: ";
cin.clear ();
cin.ignore ();
cin >> userChoice;
}
cout << endl;
switch (userChoice)
{
case 1:
cout << "Enter Book Title: ";
cin.ignore ();
getline (cin, tempBookTitle);
break;
case 2:
cout << "Enter ISBN: ";
cin.ignore ();
getline (cin, tempISBN, '\n');
break;
case 3:
cout << "Enter Author: ";
cin.ignore ();
getline (cin, tempAuthor, '\n');
break;
case 4:
cout << "Enter Publisher: ";
cin.ignore ();
getline (cin, tempPublisher, '\n');
break;
case 5:
cout << "Enter Date Added (MM/DD/YYYY): ";
cin.ignore ();
getline (cin, tempDateAdded, '\n');
break;
case 6:
cout << "Enter Quantity-on-Hand: ";
cin >> tempQtyOnHand;
break;
case 7:
cout << "Enter Wholesale Price: ";
cin >> tempWholesale;
break;
case 8:
cout << "Enter Retail Price: ";
cin >> tempRetail;
break;
//THIS IS MY PROBLEM CASE HERE//
case 9:
bookTitle [bookIndex] = tempBookTitle;
isbn [bookIndex] = tempISBN;
author [bookIndex] = tempAuthor;
publisher [bookIndex] = tempPublisher;
dateAdded [bookIndex] = tempDateAdded;
qtyOnHand [bookIndex] = tempQtyOnHand;
wholesale [bookIndex] = tempWholesale;
retail [bookIndex] = tempRetail;
bookCount++;
bookIndex++;
break;
}
}
while (userChoice != 0);
{
return;
}
}
解决方案
上面的代码无法编译,但很清楚问题出在哪里
void addBook (string bookTitle [], ... , int& bookCount)
{
...
int bookIndex = 0;
...
case 9:
bookTitle [bookIndex] = tempBookTitle;
...
bookCount++;
bookIndex++;
break;
bookIndex
即使您bookCount
大于零,您也总是从零开始。只需放下bookIndex
并bookCount
始终使用。
void addBook (string bookTitle [], ... , int& bookCount)
{
...
case 9:
bookTitle [bookCount] = tempBookTitle;
...
bookCount++;
break;
推荐阅读
- .htaccess - Amazon Cloudfront 和 .htaccess/.htpasswd
- python - 如何从 dict 列表中获取前 3 个唯一名称并在 python 中计算它
- python - Jupyter 深色主题图
- graphql - 如何从 useQuery Apollo hook 启用详细错误 - graphql
- jquery - Jquery 日期选择器 + 自定义显示取决于所选的星期几(Shopify Liquid)
- python - '图像数据的形状(28、28、1)无效'
- lua - 游戏鼠标上的 LUA 脚本在 Origin 软件中不起作用
- swift - SpriteKit:SKPhysicsJointPin 允许节点穿透节点链
- python - 使用缩放监视器捕获 Python 应用程序
- firebase - 第二个 Firebase 项目无法访问第一个项目 Firestore