2010-08-09 4 views
1

A, B, C 스타일 퀴즈 결과 계산 알고리즘의 한계점에 어려움을 겪고 있습니다.객관식 퀴즈 결과 계산 알고리즘

퀴즈는 A, B 및 C에 해당하는 정확히 3 개의 대답으로 구성된 임의의 개수의 질문으로 구성됩니다. 각 질문은 결과에 대한 답변이 모두 나오면 계속 버튼으로 자체적으로 표시됩니다. 표시됩니다.

은 A, B 및 C

응답이 가장 선택해야 표시된 결과에 대응하는, 3 개 가능한 결과가있다.

두 개의 대답이 똑같이 선택되면 결과는 마지막으로 선택해야합니다.

내가 고민하고있는 마지막 부분인데, 이것을 계산하는 가장 좋은 방법은 무엇이며, 퀴즈 중에 무엇을 저장해야합니까?

내가 가진 최초의 계산은 다음과 같습니다

이 마지막 경우를 계산하는 가장 좋은 방법은 무엇입니까
if (countA > countB && countA > countC) 
{ 
    result = "A"; 
} 
else if (countB > countA && countB > countC) 
{ 
    result = "B"; 
} 
else if (countC > countA && countC > countB) 
{ 
    result = "C"; 
} 
else 
{ 
    // two results are equal 
} 

?

+0

마지막으로 선택 했습니까? 따라서 추첨의 경우 countA == countB이면 마지막 대답이 B이면 countB가 표시됩니까? 그렇다면 묶인 결과의 마지막 결과를 찾으십시오 (SQL 쿼리에서 할 일은 간단합니다). –

+0

@James 예, 마지막 대답은 C 일 수 있으므로 A 또는 B의 마지막 대답을 알아야합니다. 이것은 데이터베이스에 저장되지 않습니다. – roryf

답변

1

목록과 같은 데이터 구조에 모든 활동 (답변 선택)을 저장할 수 있습니다. 대답을 선택하면 목록에 추가되고, 그렇지 않으면 단순히 목록에서 제거됩니다. 마지막 사례를 계산할 때 목록의 뒤쪽에서 똑같이 가중치를 적용한 결과 중 하나를 찾습니다. 처음 발견 된 것은 마지막으로 선택되었습니다. 마지막으로 선택 되었기 때문에 결과입니다.

이 방법을 사용하면 목록의 옵션 발생 횟수 만 계산하여 모든 옵션 (A, B 및 C)을 계산할 수도 있습니다.

+0

나는 이미 목록에 대답을 저장하고 있었고 이런 방식으로 계산했다. 목록을 통해 다시 반복 할 수 있다는 것은 나에게 일어나지 않았다 :) – roryf

0

아이디어는 배열 또는 3 개의 정수를 도입 할 수 있습니다. 각 요소는 A, B 또는 C에 해당합니다. 각 질문에 숫자가 있다고 가정합니다. 질문에 답할 때마다 그 배열에 질문 번호를 저장합니다. 그런 다음 배열을 반복하고 어떤 요소가 가장 높은 번호를 가졌는지, 즉 마지막으로 주어 졌는지 확인해야합니다.

+0

그리고 두 요소가 같은 값을 갖는다면 어떻게 될까? – roryf

+0

동시에 두 가지 질문에 답할 수있는 경우를 제외하고는 불가능합니다. 제안 된 배열에서 응답을받은 빈도는 저장하지 않지만 마지막으로 사용 된 질문 번호는 저장합니다. – DarkDust

3

당신이 제기 한 질문은 대답의 정확성 여부를 고려하지 않은 것 같습니다. 대한 (답변

  • 번호, A (또는 A 답변 수정) 답변
  • 번호, B 답변
  • 번호, C
  • 현재 질문 지수 : 어느 쪽이든, 당신은 7 개 카운터를 유지할 수 있습니다 최종 해답, A (또는 마지막 올바른 답) 최종 해답의
  • 지수
  • 지수, B) 다음 세 가지 카운터에서 사용하는 최종 해답의
  • 지수, C

각 질문에 대해 "현재 질문 색인"을 증가시킵니다. 답이 맞다면 신경 써야 할 때 올바른 다음 단계 만 수행하십시오. 상관 없으면 항상 다음 단계를 수행하십시오.

대답이 주어지면 "대답 수, A"카운터를 증가시키고 "최종 답변 색인 A"의 값을 설정하십시오.

퀴즈가 끝나면 올바른 응답을 구성 할 수있는 충분한 데이터가 제공됩니다.

+0

정답에 대한 개념이 없기 때문에 질문 당 하나만 선택 될 수 있다는 것을 분명히해야합니다. 이것은 좋은 해결책이지만 다른 대답은 내 상황의 제약에 더 잘 맞습니다. – roryf

+0

@ roryf : 답변을 먼저 받았다. 올바르게 대답 했으므로 나에게 잘 맞는다. 내 질문에 어떤 제약이 따르는가? 아니면 앱을 구조화 한 방법으로 솔루션을 개선 한 것입니까? –

+0

당신은 어떤 제약도 위반하지 않았고, 좀 더 일반적인 답을 허용하기 위해 일부러 제약을 남겼습니다. 당신이 말했듯이, 그것은 단지 내 응용 프로그램과 잘 어울립니다. – roryf