Перейти к содержимому


Фотография

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

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

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 OFF   siways

siways

    Постоялец

  • Участники
  • Pip
  • Cообщений: 25

Отправлено 29 Ноябрь 2019 - 10:12

Добрый день. 

Создаю программу на 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: 29 Ноябрь 2019 - 10:13

  • 0

#2 OFF   Алексей Игуменов

Алексей Игуменов

    Продвинутый

  • Активисты
  • PipPip
  • Cообщений: 167

Отправлено 30 Ноябрь 2019 - 11:41

Должно быть так. Возможно синтаксис слегка отличается, т.к. я 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); //Вывод балов после теста.

  • 0

#3 OFF   siways

siways

    Постоялец

  • Участники
  • Pip
  • Cообщений: 25

Отправлено 30 Ноябрь 2019 - 15:45

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

 

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

 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}");


  • 0





Темы с аналогичными тегами: C#, Программирование, Массивы

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных