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.
Run Code Online (Sandbox Code Playgroud)
这段代码打印"书不存在"10次,如果它不存在.怎么避免呢?我将输入的值与我已添加的值与此处未显示的"添加书籍"选项进行比较.
只有当条目中没有条目匹配时才打印"预订不存在",而不是每次都没有匹配.
因此,如果存在匹配,则将布尔变量设置为true(和break),如果在循环结束后没有匹配,则打印.
编辑:伪代码
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";
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,你的代码中有一个错误.如果相等的条件是a1 == a2 && b1 == b2 && c1 == c2,那么否定(如果这是真的则为假)!(a1 == a2 && b1 == b2 && c1 == c2)不是a1 != a2 && b1 != b2 && c1 != c2.