Перейти к содержанию

Рекомендуемые сообщения

Опубликовано (изменено)

Добрый день. 

Создаю программу на C# для тестирования на тему программирования, но не могу сделать так чтоб информация введенная пользователем сравнивалась с элементом массива в котором указан правильный ответ. 

 

В коде указаны два одномерных массива. В одном вопросы,а в другом ответы на них (ответы стоят рандомные, не обращайте внимание там может стоять любое слово): 

String[] vopros = new string[5];
            vopros[0] = "В основе концепции объектно - ориентированного программирования лежит понятие";
            vopros[1] = "Перевод программ с языка высокого уровня на язык более низкого уровня обеспечивает программа";
            vopros[2] = "Алгоритм, в котором действия выполняются друг за другом, не повторяясь называется:";
            vopros[3] = "Логический тип данных объявляется служебным словом";
            vopros[4] = "Раздел переменных определяется служебным словом";
            
            
            //Масив ответов.
            String[] Answer = new string[5];
            Answer[0] = "1";
            Answer[1] = "2";
            Answer[2] = "3";
            Answer[3] = "4";
            Answer[4] = "5";

Ниже указан цикл вывода вопросов, а так же условие в котором переменная i должна сравниваться с массивом Answer (i- это ввод ответа пользователем, а Answer - это массив в котором есть элементы с ответами на вопросы). Если кто нибудь знает как сравнить элементы массива и введенный пользователем ответ, буду очень благодарен за помощь.

            String i;
            int S = 0; 
            foreach (string output in vopros) //Цикл
            {
                Console.Write ("\n" + output + "\n"); //Вывод вопросов.
                i = Console.ReadLine (); //Ввод ответа пользователем
                if (Answer == i) //Если ответ равняется элементу массива, то +1 бал, если нет 0
                {
                    S = S + 1; //+1 бал если ответ верен.
                }
                else
                {
                    S = S + 0; //Если ответ не совпадает 0 балов
                }
            }
            Console.Write("\n" + S); //Вывод балов после теста.

Я знаю что сравниваю выше в коде не элементы массива, а сам массив, но как сравнить именно элементы нигде не могу найти...

Изменено пользователем siways
Алексей Игуменов
Опубликовано

Должно быть так. Возможно синтаксис слегка отличается, т.к. я C# не знаю  :)

            String i,j;
            int S = 0; 
             for (int j = 0; j < 10; j++) {  
                Console.Write ("\n" + vopros[j]+ "\n"); //Вывод вопросов.
                i = Console.ReadLine (); //Ввод ответа пользователем
                if (Answer[j] == i)  
                   S++;
             }
             Console.Write("\n" + S); //Вывод балов после теста.
Опубликовано

@Алексей Игуменов, спасибо, уже помогли решить эту проблему с помощью создания словаря :)

 

Кому интересен код:

 Dictionary<string, string[]> questions = new Dictionary<string, string[]>();
            int points = 0;
            //список вопросов и массив ответов, где на нулевой позиции стоит номер ответа
            questions.Add("Какой формы земля?", new string[4] { "2", "Круглая", "Шарообразная", "Квадратная"});
            questions.Add("Это тупой тест?", new string[3] { "1", "Да", "Нет"});
            questions.Add("2 + 2 будет?", new string[5] { "3", "14", "532", "4", "332532" });
            questions.Add("Какого цвета небо?", new string[5] { "1", "Голубое", "Зеленое", "Красное", "Желтое" });
            questions.Add("Самая маленькая частица?", new string[6] { "5", "Нейтрон", "Протон", "Электрон", "Нейтрино", "Кварк" });
            foreach (var question in questions)
            {
                Console.Clear();
                Console.WriteLine(question.Key);
                //выводим варианты ответа
                for (int i = 1; i < question.Value.Count(); i++)
                    Console.WriteLine($"{i}. {question.Value[i]}");
                Console.Write("Ваш вариант ответа:");
                string answer = Console.ReadLine();
                //если он соответствует правильному то добавляем балл
                if (answer == question.Value[0])
                    points++;
            }
            Console.WriteLine($"Вы набрали {points} из {questions.Count}");

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Похожий контент

    • gecsagen
      Автор gecsagen
      Python (пайтон, питон) — высокоуровневый язык программирования общего назначения с динамической типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ.
       
      На данный момент язык программирования python является одним из самых популярных. Он используется для создания сайтов, для программ ИИ, data science и много где ещё.
       
      Предлагаю в этой теме обсуждать новые версии python, полезные ресурсы, книги, помогать друг другу в решение задач и написании кода.
      Ссылка на проект: https://www.python.org/
       
    • Serzol64
      Автор Serzol64
      Здесь мы пообщаемся на тему веб-разработки и ее проблемах.
      Если вы учитесь или хотите учиться созданию сайтов или делаете сайты, новичкам нужно будет рассказать о себе, планах по веб-разработке, своих рабочих проектах и навыках в ИТ и программированию в целом, чтобы я мог узнать о вас поглубже.
      6 лет заинтересован этой темой...
      Подключайтесь!
    • Soft
      Автор Soft
      Не получается организовать нахождение индекса в массиве. Вот такое условие:
      Вот код, но индекс считает не верно, не пойму в чём дело. Индекс это порядковый номер элемента массива, который попадает в данный интервал (-5,0).
       
      #include <iostream> int main() { const int N=6; int A[N]={9,11,-5,2,-2,1}; //массив для теста int arr[N]; int max; int index; int i=0, j=0; for (i=0; i<N; ++i) if(A[i]>=-5&&A[i]<=0) arr[j++]=A[i]; if(j==0) std::cout<<"No element"<<std::endl; else { max=arr[0]; index=0; for (i=1; i<j; ++i) if(max<arr[i]) { max=arr[i]; index = i; } std::cout<<"Max element "<<max<<std::endl; std::cout<<"Index is "<<"["<< index << "]"; } std::cout<<std::endl; }
    • RENSER
      Автор RENSER
      Здравствуйте, уважаемый Евгений Валентинович!
      Я ваш поклонник, мечтаю работать в Вашей компании.
      В какой среде разработки написан Ваш антивирус?
      Начал учить c++ в Visual Studio. Уверен, что визуальная оболочка написана именно в VS
      Но само ядро антивируса - не знаю.
       
       
      С уважением, Ренат
×
×
  • Создать...