|
문제 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);
: }
:
: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|