Member 13088075 Ответов: 1

Хранить пользовательский ввод в массиве


Эй ребята,
как вы можете видеть в приведенном ниже коде. Это программа, которая принимает userinput и проверяет, являются ли они правильными или нет (на основе массива), и наконец она говорит, что вы потерпели неудачу или прошли.
Все это работает хорошо.
НО
мне нужно только сохранить все неправильные ответы и показать их как результат.
я уверен, что после этого мне придется добавить какой-то код:
falselyAnswered = falselyAnswered + 1;

я не знаю, как хранить каждый неправильный ответ в массиве!!

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

static void Main(string[] args)
{
    char[] studentAnswers = new char[20];
    int[] wrongs = new int[20];
    char[] answers = new char[] { 'E', 'D', 'D', 'B', 'A', 'C', 'E', 'B', 'D', 'C', 'D', 'A', 'A', 'D', 'E', 'E', 'A', 'E', 'A', 'D' };

    int correctlyAnswered = 0;
    int falselyAnswered = 0;

    for (int i = 0; i < studentAnswers.Length; i++)
    {
        studentAnswers[i] = InputOutput_v1.GetValidChar("Question ",i);

        if (studentAnswers[i] == answers[i])
        {
            correctlyAnswered = correctlyAnswered + 1;
        }
        else
        {
            falselyAnswered = falselyAnswered + 1;
        }

    }
    if (correctlyAnswered >= 15)
    {
        Console.WriteLine("Passed with {0} correct answers",correctlyAnswered);
    }
    else
    {
        Console.WriteLine("Failed with {0} incorrect answers. Incorrect answers are: ", falselyAnswered, wrongs );
    }
    Console.ReadLine();
}

j snooze

можно ли составить список? Так
List<char & gt; falseAnswers = новый список & lt;char>();

тогда это просто
ложные ответы.Добавить (studentAnswers[i]);

Member 13088075

Просто попробовал. Код в порядке...но результата нет.
пустой.

1 Ответов

Рейтинг:
5

Graeme_Grant

Вопрос: Почему неправильно, как int типаж? Что вы пытаетесь сохранить?

int[] wrongs = new int[20];

Вы ищете сохраненный тип Y/N? Тип bool это был бы лучший выбор. Или вы хотите сохранить неправильный ответ? Десять Вам понадобится тип char .

Я бы предложил следующее:
bool[] wrongs = new bool[20];

Для хранения wrongs, вам нужно будет добавить свой код здесь:
else
{
    falselyAnswered = falselyAnswered + 1;
    wrongs[i] = true; // code added
}


[редактировать:] Обновлено для указанного запроса.

Для форматирования вывода существует несколько различных способов. Тем легче для вас будет Строка.Метод Соединения (String, String []) (System)[^]
var wrongList = string.Join(", ", wrongAnswers);


Member 13088075

Не логическое. Я хочу показать пользователю, какие вопросы у него были неправильными.
Поэтому я попробовал вот это:
int[] wrongAnswers = new int[20];
список строк = "";
falselyAnswered = falselyAnswered + 1;
неправильные ответы[i] = i + 1;
Список += i + 1;

но теперь ... появились результаты. но они такие:
Неправильные ответы: 12359101214

как я могу поместить пространство между ними?

Graeme_Grant

см. обновленный ответ.

Member 13088075

static void Main (string[] args)
{
char [] studentAnswers = новый char[20];
тип char[] ответы = новый тип char[] { 'Е', 'Д', 'Д', 'Б', 'В', 'С', 'Е', 'Б', 'Д', 'С', 'Д', 'А', 'В', 'Д', 'Е', 'Е', 'А', 'Е', 'А', 'Д' };
int[] wrongAnswers = new int[20];
int correctlyAnswered = 0;
int falselyAnswered = 0;
список строк = "";


for (int i = 0; i & lt; studentAnswers.Длина; i++)
{
studentAnswers[я] = InputOutput_v1.GetValidChar("вопрос ",я);

if (studentAnswers[i] == ответы[i])
{
correctlyAnswered = correctlyAnswered + 1;
}
ещё
{
falselyAnswered = falselyAnswered + 1;
неправильные ответы[i] = i + 1;
Список += i + 1;
список = строка.Join (" ,", wrongAnswers[i]);

}

}
if (correctlyAnswered >= 15)
{
Приставка.WriteLine ("пройдено с {0} правильными ответами", correctlyAnswered);
}
ещё
{
Приставка.WriteLine ("не удалось с {0} неправильными ответами. Неправильные ответы: {1} ", falselyAnswered, list);
}
Приставка.Линия чтения();
}

Member 13088075

В чем проблема?!
Это должно сработать..
тем не менее неправильные ответы связаны...не разделены..

Graeme_Grant

list += i + 1;

Это должно быть thowing ошибка - должна быть удалена
list = string.Join(" ,", wrongAnswers[i]);

Это должно быть за пределами for(;;) петля. На самом деле может быть использован здесь:
Console.WriteLine("Failed with {0} incorrect answers. Incorrect answers are: {1} ", falselyAnswered, string.Join(", ", wrongAnswers));