(c언어) char 문자 중복 적용오류 질문있습니다.

조회수 456회

중복해서 삼각형의 밑변(base)과 높이(height)를 곱해서 넓이(width)를 산출하고 마지막에 continue?를 넣어서 계속 반복하느냐하는 코딩을 공부하고 있습니다.

continue다음에 Y나 y를 넣고, 다른 문자를 넣으면 프로그램에서 나가는 것을 구현하려고 했는데요..

    int base, height;
    char con;
    double width;

    while (1) {
        printf("Base = ");
        scanf_s("%d", &base);
        printf("Height = ");
        scanf_s("%d", &height);

        width = (base * height) / 2;
        printf("Triangle width = %.1lf\n",width);

        printf("Continue? ");
        scanf_s(" %c", &con);
        if (con != 'Y' || 'y') break;
    }
  • 이렇게 구현하니, 전부 나가기가 되고,
  • 마지막을 if(con != 'y') break; 로 고치니, 실행은 의도한데로 잘 됩니다.

그런데 제가 하고 싶은 것은 Y와 y를 입력했을때 프로그램을 나가는 것인데 (Y,y) 둘 다 를 넣는 것이 구현이 안되네요. 위에대로 한글자만 구현이 됩니다.

어떻게 하면 Y와y만 제외하고, 다른 글자를 넣으면 프로그램 나가기를 할 수 있는지 궁금합니다.

2 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    if (con != 'Y' || 'y') break;
    

    위의 줄을 아래와 같이 바꿔야 합니다.

    if (con != 'Y' && con != 'y') break;
    

    con이 'Y'가 아니고 그리고(&&) con이 'y'도 아닐때 탈출합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 아.. 이렇게 해보겠습니다~ 감사합니다 ^^ 배창일 2022.10.24 13:30
    • 코드의 가독성을 높이기 위해 if (!(con == 'Y' || con == 'y')) break; 로 작성하는 것도 좋습니다. 알 수 없는 사용자 2022.10.24 13:42
    • 이야.. 오늘 많이 배워갑니다^^ 감사합니다! 배창일 2022.10.24 13:44
  • con != 'Y' || 'y'

    • con != 'Y' 가 참 이거나 'y' 가 참

    그런데, 'y' 는 언제나 참으로 해석됩니다. 그래서 언제나 전체조건이 참이 되어 나가게 되는 겁니다.

    • 아.. 그렇군요! 감사합니다 ^^ 배창일 2022.10.24 13:30

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)