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

Программирование на C# (Массивы)


siways

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

Добрый день. 

Создаю программу на 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}");

Ссылка на комментарий
Поделиться на другие сайты

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

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



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

    • st210165
      От st210165
      Уважаемые Гений Касперский и вся его команда
      а есть ли у Вас разработки своего на кирилице ассемблера и Свой на русском языке язык программирования - прямо с элементарного -если так можно сказать -железа ввода в память основ алфавита и программирования
      неплохо бы его с детского сада детям давать изучать и накапливать в базы данных 
      С уважением Ваш подписчик Игорь
×
×
  • Создать...