В основном, программа запрашивает введенное пользователем имя продукта, которое будет введено в структуру. Однако, если введено имя «выход» (без кавычек), цикл должен завершиться. Вот полный код:
#include <iostream>
#define maxNum 9
using namespace std;
struct Products{
char name [20];
int modelNumber;
float price;
} products [maxNum];
void productsDisplay (Products products);
int main()
{
int i;
int k;
cout << "Enter up to 10 product details.\n"
<< "Enter quit as product name to exit the program.\n";
for (i = 0; i <= maxNum; i++)
{
cout << "Enter the product name: ";
cin >> products[i].name;
if (products[i].name == "quit")
break;
cout << "Enter the model number: ";
cin >> products[i].modelNumber;
cout << "Enter the price: ";
cin >> products[i].price;
cout << endl;
}
for (k = 0; k <= i; k++)
{
productsDisplay (products[k]);
}
system("pause");
return 0;
}
void productsDisplay (Products products)
{
cout << "Product name: " << products.name << endl;
cout << "Model number: " << products.modelNumber << endl;
cout << "Product price: $" << products.price << endl;
cout << "----------------------\n";
}
Основная проблема в этом бите:
for (i = 0; i <= maxNum; i++)
{
cout << "Enter the product name: ";
cin >> products[i].name;
if (products[i].name == "quit")
break;
На самом деле все работает нормально, за исключением того, что когда я ввожу "quit", программа не выходит из цикла for и продолжается до его завершения. Решение, вероятно, заключается в использовании вместо этого строкового типа и оператора "strcopy", но я не слишком уверен, как правильно их реализовать. Я весьма озадачен этой проблемой и был бы признателен за любую помощь в ее устранении, спасибо за чтение.