используя файл ввода / вывода в c# - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть проект в c# для моего класса объектно-ориентированного программирования, где я должен обработать экзамен и его вопросы на основе предоставленного мною .txt, а затем выплюнуть некоторую информацию об экзамене. https://gyazo.com/2f67407adf82fe4d071382bfdee5219e это текстовый файл, первая строка - это ответы на каждый вопрос, а каждая следующая строка содержит номер студента и их ответы, 0 - конец файла .txt (x обозначает отсутствие ответ дан). Программа должна рассчитать итоговый балл студента с указанием количества учеников рядом с ним, количества учеников, количества правильных ответов на каждый вопрос, минимального / максимального балла и среднего балла, достигнутого всеми студентами. Правильный ответ - +4, неправильный - -1, а никакого ответа - 0. Программа должна выводить эту информацию на консоль следующим образом. https://gyazo.com/0f1d80eeb6f44681bf6ab80f5934dcf8 (минус максимальное, минимальное и среднее значение), а также распечатайте его в файл .txt. Это код, который у меня есть на данный момент, но я не знаю, как продолжить программу.

String line;
        string[] tokens;
        int id;
        try
        {
            //Pass the file path and file name to the StreamReader constructor
            StreamReader sr = new StreamReader("c:\\exam.txt");

            //Read the first line of text
            line = sr.ReadLine();
            Console.WriteLine(line);
            line = sr.ReadLine();
            tokens = line.Split();
            id = Convert.ToInt32(tokens[0]);
            //Continue to read until you reach end of file
            while (id != 0)
            {
                //write the line to console window
                Console.WriteLine(tokens[1]);
                //Read the next line
                line = sr.ReadLine();
                tokens = line.Split();
                id = Convert.ToInt32(tokens[0]);
            }
            //close the file
            sr.Close();
            Console.ReadLine();
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
        finally
        {
            Console.WriteLine("Executing finally block.");
        }

1 Ответ

0 голосов
/ 03 апреля 2020

Вам необходимо сравнить каждый правильный ответ с каждым ответом студента. Это должно начать вас:

//Read the first line of text
string line = sr.ReadLine();
// Correct answers
string [] answerKey = line.Split();
while (true)
{
    line = sr.ReadLine();
    tokens = line.Split();
    id = Convert.ToInt32(tokens[0]);
    if (id == 0) break;
    string [] studentAnswers = tokens[1].Split();
    int score = 0;
    // Compare correct answers to student answers
    for (int i = 0; i < answerKey.Length; i++) {
        if (answerKey[i] == studentAnswers[i]) {
            score += 4;
        }
        else if (studentAnswers[i] != "X") {
            score -= 1;
        }
    }
    // Do something with score here.....
}
//close the file
sr.Close();
Console.ReadLine();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...