case 4:
{
string bookTitleDel;
int bookPageNDel;
int bookReviewDel;
float bookPriceDel;
cout << "\nPlease Enter the Title to be Deleted: ";
cin >> bookTitleDel;
cout << "\nTotal Number of Pages of the Book to be Deleted: ";
cin >> bookPageNDel;
cout << "\nPlease Enter Rating (stars): ";
cin >> bookReviewDel;
cout << "\nPlease Enter Price: ";
cin >> bookPriceDel;
for(int i=0;i<MAX_BOOKS;i++)
{
if((books[i].bookTitle!=bookTitleDel) && (books[i].bookPageN!=bookPageNDel) && (books[i].bookReview!=bookReviewDel) && (books[i].bookPrice!=bookPriceDel))
{
cout<<"\n\nBook Doesnt Exist\n";
continue;
}
}
for(int i=0; i<MAX_BOOKS; i++)
{
if((books[i].bookTitle==bookTitleDel) && (books[i].bookPageN==bookPageNDel) && (books[i].bookReview==bookReviewDel) && (books[i].bookPrice==bookPriceDel))
{
a=i;
books[i]= {};
cout << "\nBook Deleted\n";
for(int k=a; k<MAX_BOOKS-1; k++)
{
books[k]=books[k+1];
}
break;
}
}
break; //break to exit switch case #4.
此代码打印“book doesn't exists”10 次,如果它不存在的话。如何避免?我正在将输入的值与我已经使用此处未显示的“添加书籍”选项添加的值进行比较。
最佳答案
您只想在没有条目匹配时打印“Book Doesn't Exist”,而不是每次都没有匹配时。
因此,如果有匹配项,则将 bool 变量设置为 true(并中断),如果循环结束后没有匹配项,则打印。
编辑:伪代码
boolean foundMatch = false;
for(int i=0;i<MAX_BOOKS;i++)
{
if((books[i].bookTitle==bookTitleDel) && (books[i].bookPageN==bookPageNDel) && (books[i].bookReview!=bookReviewDel) && (books[i].bookPrice==bookPriceDel))
{
foundMatch = true;
break;
}
}
if (!foundMatch)
{
cout<<"\n\nBook Doesnt Exist\n";
}
顺便说一下,您的代码中有一个错误。如果相等的条件是 a1 == a2 && b1 == b2 && c1 == c2
,那么它的否定(如果为真则为假)是 !(a1 == a2 && b1 == b2 && c1 == c2)
不是 a1 != a2 && b1 != b2 && c1 != c2
。
关于c++ - 如何避免重复打印相同的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14721033/