Как пометить в 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>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д