C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[28872] [답변] for문과 그 안에 있는 switch문을 잘 따라 가 보세요...
정성훈.해미 [sage5nor] 990 읽음    2004-02-22 01:32
문제 2번만 나오는 것은 당연합니다.
만든 사람이 그렇게 만들었기 때문이지요.(의도한 바는 아니겠지만...^^*)

* for문을 따라가 보겠습니다.

i = 0 일때 -> switch문은 패스...
i = 1 일때 -> switch문의 case 1 실행 -> 문제1을 뿌려준다.
i = 2 일때 -> switch문은 case 2 실행 -> 문제2를 뿌려준다.
i = 3 일때 -> switch문은 패스.

이렇게해서 for문이 끊납니다.

정확히 말하자면 문제1을 보여주고 바로 다음 문제2를 보여주는 결과가됩니다.
순식간에 일어난 일이라 문제1은 전혀 안 보여지는 것으로 보이지요.

원하는 결과를 보여주기 위해서는 소스코드를 조금 수정해야 할겁니다.

//전역 변수
int Q_Count = 0;
const int Max_Q = 10; // 최대 문항 수
int cu=0, cut=0;

//----------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//   int cu=0, cut=0;   <-- 전역변수로 선언한다.

    // 문제를 다 풀었을 경우
    if(Q_Count > Max_Q)
    {
          ShowMessage("문제를 무두 풀었습니다.");
          return;
    }
    else if(Q_Count)
    {
        // 라디오 버튼을 선택하지 않으면 다음 문제로 안 넘어간다.
        if(Q_Count && !RadioButton1->Checked && !RadioButton2->Checked)
        {
              ShowMessage("『예』,『아니오』중 하나를 선택하세요.");
              return;
        }

        // 선택한 라디오 버튼에 따라 해당 값을 증가시킨다.
        if(RadioButton1->Checked)      cu++;
        else if(RadioButton2->Checked) cut++;
    }

    // 다음 문제를 만든다.
    RadioButton1->Checked = false;
    RadioButton2->Checked = false;
    Memo1->Lines->LoadFromFile("c:\\ans" + IntToStr(Q_Count) + ".txt");
    Edit1->Text = IntToStr(cu*10) + IntToStr(cut*10);
}

도움이 되었기를 바랍니다.
그럼 이만......

---------------------------------------------------
작은 생각이 세상을 만든다. - 정성훈.해미 -
---------------------------------------------------



아카시아 님이 쓰신 글 :
: 아래 소스는 제가 만든건데요,
: 도대체 왜 실행할때는 문제2번이 안나오는지 모르겠어요,ㅠ
: 디버깅할때는 잘만 되는데...
: 버튼2를 클릭했을때,
: 메모장에는 문제가 뿌려지구요,
: 예와 아니오의 항목이 라디오버튼으로 되어있는데,
: 예를 클릭하면cu가 ++되구요,
: 아니오 클릭하면 cut가 ++되요.
: 그리고 다음 문제로 넘어갈때마다 - 버튼2를 클릭할때마다 -
: 라디오버튼은 체크가 해제됩니다.
: 마지막으로 에디터박스에는 카운터한값들이 뿌려지는데..
:
: 도대체 어디서 문제가 생겨 제대로 실행이 안되는지 모르겠습니다.
: 제가 c++초보거든요;
: 고수님들께 조언 부탁드려요,ㅠㅠㅠㅠ
: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
:     int cu=0, cut=0;
:     RadioButton1->Checked = false;
:     RadioButton2->Checked = false;
:     for(int i=0;i<=3;i++)
:     {
:     switch (i)
:     {
:       case 1:
:         Memo1->Lines->LoadFromFile("c:\\ans1.txt");
:         if(RadioButton1->Checked == true)
:         {
:             cu++;
:         }
:         else if(RadioButton2->Checked == true)
:         {
:             cut++;
:         }
:       break;
:       case 2:
:         Memo1->Lines->LoadFromFile("c:\\ans2.txt");
:         if(RadioButton1->Checked == true)
:         {
:             cu++;
:         }
:         else if(RadioButton2->Checked == true)
:         {
:             cut++;
:         }
:       break;
:     }
:     }
:     Edit1->Text = (cu*10) + (cut*10);
: }
:
: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+ -

관련 글 리스트
28867 이 소스에서.. 아카시아 720 2004/02/21
28872     [답변] for문과 그 안에 있는 switch문을 잘 따라 가 보세요... 정성훈.해미 990 2004/02/22
34502         Re:[답변] for문과 그 안에 있는 switch문을 잘 따라 가 보세요... 정성훈.해미 936 2004/02/22
34501         Re:[답변] for문과 그 안에 있는 switch문을 잘 따라 가 보세요... 아카시아 834 2004/02/22
28871     Re:이 소스에서.. 김용수 883 2004/02/22
34500         Re:Re:이 소스에서.. 아카시아 807 2004/02/22
28868     Re:이 소스에서.. 18억 776 2004/02/21
34499         Re:Re:이 소스에서.. 아카시아 775 2004/02/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.