Как пометить в 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>