2017-09-27 1 views
-5

어떤 논리 오류가 발생했는지 묻고 싶습니다. 내가 CD 모든 유형의 숫자 ​​1을 입력하더라도, 출력은 5 % 할인이있을 것이다 .. 5 % 할인C++ 다른 논리 오류 및 잘못된 출력

#include <iostream> 
using namespace std; 

int main() { 
    int type_i,type_l,type_o,type_c; 
    float cost_i,cost_l,cost_o,cost_c,discount_i,discount_l,discount_o,discount_c,discounted_i,discounted_l,discounted_o,discounted_c,total_dis,amount; 
    float price_i=39.9,price_l=29.9,price_o=49.9,price_c=59.9; 

    cout<<"\t\t\tPower House\n"; 
    cout<<"Quantity of International CD:"; 
    cin>>type_i; 
    cout<<"Quantity of Local CD:"; 
    cin>>type_l; 
    cout<<"Quantity of Oldies CD:"; 
    cin>>type_o; 
    cout<<"Quantity of Classic CD:"; 
    cin>>type_c; 

    cost_i=type_i*price_i; 
    cost_l=type_l*price_l; 
    cost_o=type_o*price_o; 
    cost_c=type_c*price_c; 

    if (2<=type_i<=5){ 

     discount_i=cost_i*0.05; 
     discounted_i=cost_i*0.95; 
     } 
     else if(6<=type_i<=10){ 

      discount_i=cost_i*0.1; 
      discounted_i=cost_i*0.9; 
     } 
     else if(11<=type_i<=15){ 

      discount_i=cost_i*0.15; 
      discounted_i=cost_i*0.85; 
     } 
     else if(16<=type_i<=20){ 

      discount_i=cost_i*0.2; 
      discounted_i=cost_i*0.8; 
     } 
     else if(type_i>20){ 

      discount_i=cost_i*0.25; 
      discounted_i=cost_i*0.75; 
     } 
     else if(0<=type_i<=1){ 
     discounted_i=cost_i; 
    } 
    if (2<=type_l<=5){ 

     discount_l=cost_l*0.05; 
     discounted_l=cost_l*0.95; 
     } 
     else if(6<=type_l<=10){ 

      discount_l=cost_l*0.1; 
      discounted_l=cost_l*0.9; 
     } 
     else if(11<=type_l<=15){ 

      discount_l=cost_l*0.15; 
      discounted_l=cost_l*0.85; 
     } 
     else if(16<=type_l<=20){ 

      discount_l=cost_l*0.2; 
      discounted_l=cost_l*0.8; 
     } 
     else if(type_l>20){ 

      discount_l=cost_l*0.25; 
      discounted_l=cost_l*0.75; 
     } 
     else if(0<=type_l<=1){ 
     discounted_l=cost_l; 
    } 
    if (2<=type_o<=5){ 

     discount_o=cost_o*0.05; 
     discounted_o=cost_o*0.95; 
     } 
     else if(6<=type_o<=10){ 

      discount_o=cost_o*0.1; 
      discounted_o=cost_o*0.9; 
     } 
     else if(11<=type_o<=15){ 

      discount_o=cost_o*0.15; 
      discounted_o=cost_o*0.85; 
     } 
     else if(16<=type_o<=20){ 

      discount_o=cost_o*0.2; 
      discounted_o=cost_o*0.8; 
     } 
     else if(type_o>20){ 

      discount_o=cost_o*0.25; 
      discounted_o=cost_o*0.75; 
     } 
     else if (0<=type_o<=1){ 
     discounted_o=cost_o; 
    } 
    if (2<=type_c<=5){ 

     discount_c=cost_c*0.05; 
     discounted_c=cost_c*0.95; 
     } 
     else if(6<=type_c<=10){ 

      discount_c=cost_c*0.1; 
      discounted_c=cost_c*0.9; 
     } 
     else if(11<=type_c<=15){ 

      discount_c=cost_c*0.15; 
      discounted_c=cost_c*0.85; 
     } 
     else if(16<=type_c<=20){ 

      discount_c=cost_c*0.2; 
      discounted_c=cost_c*0.8; 
     } 
     else if(type_c>20){ 

      discount_c=cost_c*0.25; 
      discounted_c=cost_c*0.75; 
     } 
     else if(0<=type_c<=1){ 
     discounted_c=cost_c; 
    } 

    total_dis=discount_i+discount_l+discount_o+discount_c; 
    amount=discounted_i+discounted_l+discounted_o+discounted_c; 

    cout<<"Total discount:"<<total_dis; 
    cout<<"\nAmount due:"<<amount; 


} 

https://i.stack.imgur.com/qEPgK.png

이^위의 제 질문에만 CD의 2 ~ 5 구매입니다 이 프로그램의 경우

+1

'2 <= type_i <= 5'는'(2 <= type_i) <= 5와 동일하기 때문에 항상 '참'입니다. '(참) <= 5'와 동일합니다 '사실'. – user463035818

+2

두 조건 '2 <= type_i 및 type_i <= 5'를 확인해야합니다. – user463035818

+0

질문 자체와 완전히 관련이 없습니다. 하지만 이런 문제가 생기면 나는 CD 클래스를 만들 것이다. – quantik

답변

1

(11<=type_c<=15)(11<=type_c && type_c<=15)으로 작성해야합니다.