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

Программирование на 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
      Уважаемые Гений Касперский и вся его команда
      а есть ли у Вас разработки своего на кирилице ассемблера и Свой на русском языке язык программирования - прямо с элементарного -если так можно сказать -железа ввода в память основ алфавита и программирования
      неплохо бы его с детского сада детям давать изучать и накапливать в базы данных 
      С уважением Ваш подписчик Игорь
×
×
  • Создать...