2013-02-06 4 views
0
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. 

이 코드는 "책이 없습니다"라는 메시지를 10 번 인쇄합니다 (존재하지 않는 경우). 어떻게 피하는가? 입력 된 값을 여기에 표시되지 않은 "책 추가"옵션으로 이미 추가 한 값과 비교합니다.동일한 것을 반복해서 인쇄하는 것을 피하는 방법은 무엇입니까?

답변

5

항목이 NONE 인 경우에만 '책이 존재하지 않습니다.'를 인쇄하고 일치하는 항목이 없을 때마다 인쇄하지 마십시오.

그래서 일치하는 것이 있으면 부울 변수를 true로 설정하고, 루프가 끝난 후 인쇄 할 때 일치하는 것이없는 경우 부울 변수를 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) NOT a1 != a2 && b1 != b2 && c1 != c2입니다.

+0

정확히 내가하려고하는 것이지만 단서가없는 방법은 무엇입니까? 도와 주실 래요? –

+0

@MokammelHossainSanju 당신은 그의 대답을 읽었습니까? – Rapptz

+0

@Rapptz 저는 C++을 처음 접하니 :) –

0

루프 대신 2 개를 사용하고 for 루프를 하나 사용하고 Patashu가 말한 것처럼 부울 변수를 사용하십시오.

관련 문제