Member 13560407 Ответов: 2

Начните цикл для викторины с множественным выбором


Я должен построить тест с множественным выбором для класса на C#. Я объявил переменные, контрольная точка проекта на этой неделе заключается в реализации циклов в моем коде. Я прочитал свой учебник, и хотя он объясняет циклы, он не дает мне идеи, чтобы реализовать его. Я упал, что мне нужно использовать "цикл Foreach", это правильно? Кто-нибудь может дать мне визуальное представление? это то, что у меня есть до сих пор. Я понятия не имею, как написать или структурировать строку кода.
using System;

namespace Checkpoint_2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Quiz");
            //Variables
            bool answerCorrect = false; // will be used to evaluate if answer is correct or not
            string[] questions = { "2+2=", "4x5=", "8+2=", "2x100=", "3+3=", "2+100", "2-2=", "1+2=", "3x3=15", "45-5+8=48" }; // will be questions used on test. 8 Multiple choice and 2 true/false
            string[] answers = { "a.4 b.2 c.6 d. 10", "a.40 b.20 c.16 d. 11", "a.6 b.12 c.16 d. 10", "a.104 b.200 c.65 d. 102", "a.4 b.2 c.6 d. 10", "a.14 b.200 c.60 d. 102", "a.4 b.2 c.0 d. 10", "a.3 b.2 c.6 d. 102", "true false", " true false" }; // these will stand as answer bank for all questions
            string[] correctanswer = { "a", "b", "d", "b", "c", "d", "c", "a", "false", "true" }; //these are the correct answers to all the question. any other selections will be countd as incorrect
            int scoreCard = 0; // everyone starts with 0 correct out of ten. once quiz is completed score will be listed as 1-10. 
            int[] questionsIncorrect = { };


            //Welcome To Program
            Console.WriteLine("Ryan Hinds, ENGR101- Quiz");
            Console.WriteLine();


            Console.WriteLine(questions[0]);



            Console.WriteLine("Press any key...");
            Console.ReadKey();
        }
    }
}


Что я уже пробовал:

Я покопался в своем учебнике и некоторых других интернет-ресурсах. Я также пытался подключить свой код, но получал ошибки

Patrice T

"но получите ошибку"
И вы планируете рассказать нам, какие ошибки и позиции?

2 Ответов

Рейтинг:
2

OriginalGriff

Петли довольно просты. То, что вы ищете, - это for цикл - потому что вам нужен индекс в несколько массивов, чтобы получить доступ к вопросу, его ответам и правильному результату. Это объясняет их: для (Справочник по c#) | Майкрософт документы[^]
Таким образом, вы можете написать простой цикл для обработки этих вопросов:

for (int questionNumber = 0; questionNumber < numberOfQuestions; questionNumber++)
   {
   // Body of your loop: ask a question, get an answer, check it here.
   // (Use questionNumber to access each array)
   string question = questions[questionNumber];
   ...
   }
Прочтите ссылку и попробуйте это сделать.


Member 13560407

Спасибо за ведущую роль ОГ. Я попытался реализовать то, что у вас есть здесь и вне ссылки, но это не будет тянуть из моего массива.

Вот что у меня есть.

использование системы;

пространство имен Checkpoint_2
{
классная программа
{
static void Main(string[] args)
{
Приставка.WriteLine("Викторина");
//Переменные параметры
bool answerCorrect = false; // будет использоваться для оценки правильности ответа или нет
строка[] вопросы = { "2+2=", "4x5=", "8+2=", "2x100=", "3+3=", "2+100", "2-2=", "1+2=", "3x3=15", "45-5+8=48" }; // будут вопросы, используемые на тесте. 8 множественный выбор и 2 true/false
строка[] ответы = { "а.4 Б.2 гр.6 д. 10", "на.40 б.20 гр.16 д. 11", "на.6 б.12 гр.16 д. 10", "на.104 б.200 гр.Д 65. 102", "на.4 Б.2 гр.6 д. 10", "на.14 б.200 гр.60 д. 102", "на.4 Б.2 гр.0 д. 10", "на.3 б.2 гр.6 д. 102", "истина / ложь", "истина" или "ложь" }; // эти будут стоять как банк ответов на все вопросы
string[] correctanswer = { "a", "b", "d", "b", "c", "d", "c", "a", "false", "true" }; //это правильные ответы на все вопросы. любые другие выборы будут засчитаны как неправильные
int scoreCard = 0; // все начинают с 0 правильных чисел из десяти. после завершения викторины оценка будет указана как 1-10.
int[] questionsIncorrect = { };


//Добро Пожаловать В Программу
Приставка.WriteLine("Райан Хиндс, ENGR101 - викторина");
Приставка.метод WriteLine();


for (int i = 0; i < 9; i++);
{ string question = вопросы [0];
string answer = ответы[0];



}




Приставка.ReadKey();

}
}
}

OriginalGriff

Есть ли какая-то особая причина, по которой вы хотите получить доступ к первому вопросу каждый раз, когда вы идете по кругу?
Подсказка: возможно, стоит подумать о myArray[indexNumber] вместо myArray[0]...

Рейтинг:
0

Peter Leow

Давайте представим, что тест проводится таким образом, что

0. Test starts with all parameters initialized, e.g. i = 0, scoreCard = 0

1. a teacher reads out one question (questions[i]) and the answer options (answers[i]) (at iteration i)

2. a student replies with an answer option, say "a" (student_answer = "a" )

3. the teacher checks the student's answer against the correct answer: ( student_answer == correctanswer[i])
   
   3.1 if the answer is correct, add one to the score ( scoreCard++ )

4. Repeat 1 to 3 till all questions are attempted.