c++ - 如何避免重复打印相同的内容?

标签 c++ arrays for-loop

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/

相关文章:

java - 在二维数组中搜索特定行

arrays - 阵列访问的奇怪天花板

bash - 如何在bash中使用变量名生成for循环序号?

performance - 为什么 Scala "for loop comprehensions"与 FOR 循环相比非常慢?

java - for循环内的for循环不执行

c++ - 友元函数声明中的尖括号是什么意思?

c++ - 在用户插入数据之前创建结构对象时,Vector 返回乱码

c++ - 异步tcp套接字和发送数据时的进度

c++ - waitpid() 给出不正确的退出代码

c - 数组将 2 个值存储在一个 "place"