Как пометить в txt правильный ответ для теста? - C#

Узнай цену своей работы

Формулировка задачи:

Ребят делаю тест. Нашел у вас на сайте годный пример все работает но не могу понять как он определяет правильные ответы в упор не пойму.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
 
namespace MelodyGuess
{
    public partial class fTest : Form
    {
        int CountOfAsk;                    //счет вопросов
        int CorrectAnswers;                //количество правильных ответов
        int NotCorrectAnswers;             //количество неправильных ответов
 
        string[] mNotCorrectAnswers;       //массив вопросов на которые даны неправильные ответы
 
        int NumberCorrectAnswer;           //номер правильного ответа
        int ChooseAnswer;                  //номер ответа, выбранный пользователем
 
        StreamReader reader;
        public fTest()
        {
            InitializeComponent();
        }
 
        private void fTest_Load(object sender, EventArgs e)
        {
            button1.Text = "Next ask";
            button2.Text = "Exit";
 
            //подписка на событие "ChangeStatus" RadioButton
            radioButton1.CheckedChanged += new EventHandler(ChangeStatus);
            radioButton2.CheckedChanged += new EventHandler(ChangeStatus);
            radioButton3.CheckedChanged += new EventHandler(ChangeStatus);
            radioButton4.CheckedChanged += new EventHandler(ChangeStatus);
            //начало теста
            BeginTest();
        }
 
        private void BeginTest()
        {
            var coding = Encoding.GetEncoding(1251);
            try
            {
                //создание экземпляра StreamReader для чтение из файла
                reader = new StreamReader(@"C:\MelodyGuess\MelodyGuess\Resources\test.txt", coding);
              // reader = new StreamReader(Directory.GetCurrentDirectory() + @"E:\MelodyGuess\MelodyGuess\Resources\test.txt", coding);
                
               // string text = File.ReadAllText(@"C:\MelodyGuess\MelodyGuess\Resources\test.txt");
                
                Text = reader.ReadLine();  //название предмета
                
                //обнуление всех счетчиков
                CountOfAsk = 0; CorrectAnswers = 0; NotCorrectAnswers = 0;
                //задаем размер массива для неправильных ответов
                mNotCorrectAnswers = new string[100];
            }
            catch (Exception ex)
            {
                //отчет о всех ошибках
                MessageBox.Show(ex.Message, "Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            ReadNextAsk();
        }
 
        private void ReadNextAsk()
        {
            //считывание вопроса
            label1.Text = reader.ReadLine();
 
            //считывание вариантов ответов
            radioButton1.Text = reader.ReadLine();
            radioButton2.Text = reader.ReadLine();
            radioButton3.Text = reader.ReadLine();
            radioButton4.Text = reader.ReadLine();
          
            //выясняем какой ответ правильный
            //NumberCorrectAnswer = int.Parse(reader.ReadLine());
 
            //переводим все переключатели в состояние "выключено"
            radioButton1.Checked = false;
            radioButton2.Checked = false;
            radioButton3.Checked = false;
            radioButton4.Checked = false;
            
            //первую кнопку задаем неактивной пока студент не выберет вариант ответа 
            button1.Enabled = false;
 
            //подсчитываем количество вопросов
            CountOfAsk = CountOfAsk + 1;
 
            //проверяем не конец ли файла
            if (reader.EndOfStream == true) button1.Text = "Finish";
        }

        private void ChangeStatus(object sender, EventArgs e)
        {
            //кнопка "Next ask" становиться активной и ей передаем фокус
            button1.Enabled = true;
            button1.Focus();
 
            RadioButton perek = (RadioButton)sender;
            var temp = perek.Name;
            //выясняем номер ответа, выбранный студентом
            ChooseAnswer = int.Parse(temp.Substring(11));
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //счет правильных ответов
            if (ChooseAnswer == NumberCorrectAnswer) CorrectAnswers += 1;
 
            //
            if (ChooseAnswer != NumberCorrectAnswer)
            {
                NotCorrectAnswers += 1;
                //запоминаем вопросы с неправильными ответами
                mNotCorrectAnswers[NotCorrectAnswers] = label1.Text;
            }
 
            if (button1.Text == "Start test begin")
            {
                button1.Text = "Next ask";
 
                //Переключатели становятся видимыми, доступными для выбора
                radioButton1.Visible = true;
                radioButton2.Visible = true;
                radioButton3.Visible = true;
                radioButton4.Visible = true;
               
                //переходим к началу файла
                BeginTest();
                return;
            }
 
            if (button1.Text == "Finish")
            {
                //закрываем текстовый файл
                reader.Close();
 
                //переключатели делаем невидимыми
                radioButton1.Visible = false;
                radioButton2.Visible = false;
                radioButton3.Visible = false;
                radioButton4.Visible = false;
              
                //формируем оценку за тест
                label1.Text = String.Format("Testing completed.\n" +
                    "Правильных ответов {0} из {1}.\n"
                    + "Оценка в пятибалльной системе: {2:F2}.", CorrectAnswers, CountOfAsk,
                    (CorrectAnswers * 5.0F) / CountOfAsk);
 
                button1.Text = "Start test begin";
 
                //вывод вопросов на которые вы дали неправильный ответ
                var str = "Список вопросов, на которые вы дали " + "неправильный ответ: \n\n";
                for (int i = 1; i <= NotCorrectAnswers; i++)
                {
                    str = str + mNotCorrectAnswers[i] + "\n";
                }
 
                //если есть неправильные то вывести их через MessageBox
                if (NotCorrectAnswers != 0)
                    MessageBox.Show(str, "Testing completed");

            }
            if (button1.Text == "Next ask") ReadNextAsk();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Close();
 
        }
    }
}
А и вот эта строчка не работает
  reader = new StreamReader(Directory.GetCurrentDirectory() + @"E:\MelodyGuess\MelodyGuess\Resources\test.txt", coding);
Работает норм если исключить метод
 Directory.GetCurrentDirectory()
//выясняем какой ответ правильный
            //NumberCorrectAnswer = int.Parse(reader.ReadLine());
Собственно вот тут тоже встала проблема где и как переменной через это
 int.Parse(reader.ReadLine())
присвоить значение???

Решение задачи: «Как пометить в txt правильный ответ для теста?»

textual
Листинг программы
<Test>
    <Problem>
        <Question>Ce familie poarta decanul facultatii FCIM ?</Question>
        <Options>
            <Option valid="true">Balmus</Option>
            <Option>Melnic</Option>
            <Option>Pavlov</Option>
            <Option>Vasilache</Option>
        </Options>
    </Problem>
    <Problem>
        <Question>Cum se numeste raionul in care este situat blocul 3 al UTM ?</Question>
        <Options>
            <Option>Venus</Option>
            <Option>Centru</Option>
            <Option valid="true">Riscani</Option>
            <Option>Ciocana</Option>
        </Options>
    </Problem>
    <Problem>
        <Question>Pentru ce ne trebuie sa terminam universitatea ?</Question>
        <Options>
            <Option>Sa devenim oameni de succes</Option>
            <Option>Sa irososim timpul degeaba</Option>
            <Option valid="true">Pentru a obtine o diploma</Option>
            <Option>Pentru a capata cunostinte</Option>
        </Options>
    </Problem>
</Test>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.615 из 5
Похожие ответы