@@ -35,44 +35,80 @@ public void Read_From_File()
35
35
36
36
string [ ] tmp_str_arr = File . ReadAllLines ( this . input_file ) ;
37
37
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 )
39
39
{
40
40
this . input_lines . Add ( new string [ 2 ] { tmp_str_arr [ i ] , tmp_str_arr [ i + 1 ] } ) ;
41
41
}
42
42
}
43
-
44
- void Generate_Answers ( )
43
+
44
+ public void Generate_Answers ( )
45
45
{
46
46
// Создать массив 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
+ // добавить неправильные варианты ответов
68
68
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
+ }
69
97
}
70
-
71
- void Save_Tests_To_File ( )
98
+
99
+ public void Save_Tests_To_File ( )
72
100
{
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
+ }
76
112
}
77
113
}
78
114
}
0 commit comments