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