Skip to content

Commit 2a4b800

Browse files
committed
Закончил первый рабочий прототип
1 parent 2fcdc97 commit 2a4b800

File tree

2 files changed

+70
-30
lines changed

2 files changed

+70
-30
lines changed

AnswerGenerator.cs

Lines changed: 65 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -35,44 +35,80 @@ public void Read_From_File()
3535

3636
string[] tmp_str_arr = File.ReadAllLines(this.input_file);
3737

38-
for(int i = 0; i < tmp_str_arr.Length; i + 2)
38+
for(int i = 0; i < tmp_str_arr.Length; i = i + 2)
3939
{
4040
this.input_lines.Add(new string[2] { tmp_str_arr[i], tmp_str_arr[i + 1] });
4141
}
4242
}
43-
44-
void Generate_Answers()
43+
44+
public void Generate_Answers()
4545
{
4646
// Создать массив output_lines[][6]
47-
//{
48-
// Q1,A1,A-,A-,A-,A-;
49-
// ...
50-
// Qn,An,A-,A-,A-,A-;
51-
//}
52-
// A- выбираются случайным образом из всех A, кроме правильного.
53-
54-
// If you just want to generate a random number that never repeats you could do something like this
55-
56-
private Random rand = new Random();
57-
private List<int> used = new List<int>;
58-
protected int randomNonrepeating()
59-
{
60-
int i = rand.next();
61-
while(used.contains(i)){
62-
i = rand.next();
63-
}
64-
used.add(i);
65-
return i;
66-
}
67-
}
47+
//{
48+
// Q1,A1,A-,A-,A-,A-;
49+
// ...
50+
// Qn,An,A-,A-,A-,A-;
51+
//}
52+
// A- выбираются случайным образом из всех A, кроме правильного.
53+
54+
// созадать массив всех ответов
55+
List<string> all_answers = new List<string>();
56+
foreach(var line in this.input_lines)
57+
{
58+
all_answers.Add(line[1]);
59+
}
60+
61+
// скопировать в output_lines вопросы и правильные ответы
62+
foreach(var line in this.input_lines)
63+
{
64+
this.output_lines.Add(new string[6] { line[0], line[1], "", "", "", "" });
65+
}
66+
67+
// добавить неправильные варианты ответов
6868

69+
// временный массив для неправильных вариантов ответов
70+
// DELETE string[] tmp_incorrect_answers = new string[4]();
71+
List<int> answer_indexes = new List<int>();
72+
Random rand = new Random();
73+
74+
int i, j, k, v;
75+
76+
for(i = 0; i < this.output_lines.Count; ++i)
77+
{
78+
// подбираем индексы случайных ответов, исключая индекс правильного ответа
79+
for(j = 0; j < 4; ++j)
80+
{
81+
v = rand.Next(all_answers.Count);
82+
while((answer_indexes.Contains(v)) || (v == i))
83+
{
84+
v = rand.Next(all_answers.Count);
85+
}
86+
answer_indexes.Add(v);
87+
}
88+
89+
// добавляем неверные варианты ответов в output_lines согласно подобранным индексам
90+
for(k = 0; k < 4; ++k)
91+
{
92+
this.output_lines[i][k + 2] = all_answers[answer_indexes[k]];
93+
}
94+
95+
answer_indexes.Clear();
96+
}
6997
}
70-
71-
void Save_Tests_To_File()
98+
99+
public void Save_Tests_To_File()
72100
{
73-
// создать файл
74-
// вывести в него массив output_lines
75-
// закрыть файл
101+
// вывести в файл массив output_lines
102+
103+
if(!File.Exists(this.output_file))
104+
{
105+
foreach(var test in output_lines)
106+
{
107+
File.AppendAllLines(this.output_file, test);
108+
File.AppendAllText(this.output_file, "\n");
109+
}
110+
111+
}
76112
}
77113
}
78114
}

Program.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,13 @@ public static void Main(string[] args)
3636
{
3737
// TODO Распарсить вывод командной строки и передать значения в конструктор AG
3838
// выполнить все проверки на корректность, формат и существование
39-
var AG = new AnswerGenerator(args[0], "", 5);
39+
// var AG = new AnswerGenerator(args[0], "", 5);
40+
41+
var AG = new AnswerGenerator("input", "output", 5);
4042

4143
AG.Read_From_File();
44+
AG.Generate_Answers();
45+
AG.Save_Tests_To_File();
4246

4347
}
4448

0 commit comments

Comments
 (0)