Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 20

Разделить множество элементов по группам с минимумом повторений

04.05.2015, 09:48. Показов 1298. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток) помогите решить такою задачку, а именно: Есть n-количество вопросов и k -количество вариантов, k включает в себя m вопросов (из изначально имеющихся n) . Что нужно сделать: Мне нужно создать из имеющихся n-вопросов
создать эти k варианты что бы они имели наименьшее сходство друг с другом.

Добавлено через 1 минуту
пока писал, появились идейки) хочу услышать ваши советы
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2015, 09:48
Ответы с готовыми решениями:

Разделить содержимое файла по группам символов
Добрый вечер Столкнулся с такой проблемой с решением. 17. В файле данный текст из 20 символов. Напечатать сначала все цифры, входящие в...

разделить множество на два подмножества
Задача. Дан массив от 1 до 100. Из каждого числа нужно извлечь корень квадратный. После этого нужно разделить это множество на два...

Разделить множество на три подмножества
Задать множество S состоящее из символов. Разделить множество S на три подмножества: А – символы русского алфавита, Б – латинские символы,...

10
Модератор
 Аватар для D1973
9919 / 6455 / 2456
Регистрация: 21.01.2014
Сообщений: 27,395
Записей в блоге: 3
04.05.2015, 10:58
1. Создаешь массив вопросов из n элементов
C++
1
String All[n];
2. Создаешь k массивов типа String с количеством элементов m для записи вопросов по вариантам.
C++
1
2
3
String Var_1[m];
...
String Var_k[m];
3. Используя Random(), выбираешь m случайных элементов из массива All и записываешь их в массив Var_... и так k раз

А вообще-то лучше предоставить более подробную информацию о том, откуда берутся вопросы. Если ты считываешь их из файла - там можно придумать другой алгоритм, если вопросы берутся из БД - третий и т.д.
1
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 20
04.05.2015, 11:44  [ТС]
смотри. суть задачи такова. пользователь вводит все вопросы , вводи к-во вариантов и вопросов в варианте . что делает программа : генерирует из вопросов k вариантов с m вопросами.

Добавлено через 20 минут
ну к примеру. у тебя есть 100 вопросов. из ста вопросов надо сделать 40 вариантов по 20 вопросов. что бы вопросы в вариантах повторялись минимальное кол-во раз

Добавлено через 1 минуту
можно считать что вопросы будут в файле и работа будет с строками. но это не суть мне самое главное их раскинуть правильно

Добавлено через 5 минут
Я думал сделать так. узнать мин Кол-во повторяющихся вопросов. ну к примеру как писал выше . каждый вопрос будет повторяться (40*20/100=8) 8 раз ну тогда можно через множества сделать . забивать 8 раз 1 вопрос в случайные варианты и так все вопросы. ну в смысле, создаю множество, рандномно записываю в вариант добавляю в множество если есть в множестве ещё раз и так пока не пройдет 8 раз. вот такая у меня мысль
0
Модератор
 Аватар для D1973
9919 / 6455 / 2456
Регистрация: 21.01.2014
Сообщений: 27,395
Записей в блоге: 3
04.05.2015, 12:14
Цитата Сообщение от Pride17 Посмотреть сообщение
пользователь вводит все вопросы
а куда вводит? В текстовик какой-то, откуда потом они считываются, или тут же, в программе?
Цитата Сообщение от Pride17 Посмотреть сообщение
можно считать что вопросы будут в файле и работа будет с строками.
М-да, читать надо внимательно... Ладно, до дому доберусь - примерчик набросаю...
0
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 20
04.05.2015, 15:32  [ТС]
Смотри) я Сделаю интерфейс для пользователя где он будет вводить все данные , Скорее всего при переходе на следующий вопрос я буду записывать их в файл для болея удобной работы с ними. но это все не важно сейчас)) просто подтолкните, дайте идейку
0
Модератор
 Аватар для D1973
9919 / 6455 / 2456
Регистрация: 21.01.2014
Сообщений: 27,395
Записей в блоге: 3
05.05.2015, 16:33
Лучший ответ Сообщение было отмечено Pride17 как решение

Решение

Ну вот, идея такая...
1. Есть какой-то файл (у меня all.txt), в котором записаны все вопросы
2. Пользовать выбирает количество вариантов и количество вопросов в варианте, после чего нажимает кнопку "Загрузить общий список"
3. После загрузки списка становится доступной кнопка "Разбить по вариантам"
4. Нажатие этой кнопки инициирует выбор случайных вопросов из общего списка в каждый вариант. Каждый вариант записывается в файл типа var1.txt, var2.txt ... varN.txt

Весь код закомментирован, разобраться, я думаю, труда не составит.
Мемо в программе нужны только для демонстрации, практической нагрузки они никакой не несут и их можно смело выкидывать из кода
Миниатюры
Разделить множество элементов по группам с минимумом повторений  
Вложения
Тип файла: rar Случайные вопросы.rar (508.0 Кб, 6 просмотров)
1
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 20
06.05.2015, 17:10  [ТС]
Спасибо Брат)

Добавлено через 6 часов 28 минут
Спасибо, я тебе благодарен ) ты сделал рандомом, мне выходит надо был псевдо) Все равно большое спасибо, я сам переделаю) если не трудно , объясни что делает эта строчка
C++
1
(String().sprintf("Вариант № %d", var));
если не трудно как можно подробней) Я извиняюсь за глупые вопросы , но что такое стринг лист . я так понимаю это массив из строк?
0
Модератор
 Аватар для D1973
9919 / 6455 / 2456
Регистрация: 21.01.2014
Сообщений: 27,395
Записей в блоге: 3
07.05.2015, 03:35
Цитата Сообщение от Pride17 Посмотреть сообщение
что делает эта строчка
sprintf - метод класса TString. Позволяет выводить форматированную строку; там, где в строке должны быть вставлены какие-то переменные значения, ставятся спецсимволы подстановки, значения для которых берутся из списка аргументов, перечисленых через запятую после самой строки формата. В нашем случае имеется только одни аргумент - var, и он подставляется в строку формата на место, указанное символом %d.
Самые ходовые спецсимволы формата:
%d - целое число (int)
%u - целое беззнаковое (unsigned int)
%f - действительное число (double). Может указываться с индексами, указывающими, сколько символов займет целая и дробная часть, например %8.2f - 8 знаков для целой части, 2 знака после запятой
%s - строка (String)
Все это есть в справке Билдера.
Вообще-то, в данном случае можно было попросту записать
C++
1
String s = "Вариант № " + IntToStr(var);
Но когда строка разрывется несколькими разнотипными переменными - удобство этого метода очевидно

Цитата Сообщение от Pride17 Посмотреть сообщение
но что такое стринг лист
Это невизуальный компонент, по сути - список строк (что из названия очевидно). Включает в себя возможности класса TStrings по работе со списками строк (добавление, удаление, запись в файл и поток и чтение из файла и потока и т.д.), кроме этого добавляет свои свойства и методы (сортировка строк, запрет дублирования строк в отсортированном списке и т.д.). Очень удобен для работы с текстовыми файлами.
2
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 20
07.05.2015, 11:12  [ТС]
Спасибо
0
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 20
22.05.2015, 18:57  [ТС]
и да я уже все сделал, но возникла одна ошибка в равномерной сортировке . В общем я создал 2 варианта генерирования. первый, условно рандомный , где каждый вопрос может превышать повторения на единицу от среднего повторения , а второй балансировка повторений вопросов . Ошибка во втором. Вот как все работает .
Создаю множество что бы не повторялись вопросы в варианте и ещё один масив , что бы вести счетчик за использованием вопросов . рандомно кручу вопросы пока не забью все варианты . Дале что бы уравновесить количество использованных вопросов провожу поиск и замену вопроса но затирает не все . Если поможете буду Очень-Очень рад и благодарен
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 int jj,i0,i1,iv;
        if(RadioGroup1->ItemIndex==0)    // включаю "балансировку " вопросов
         {ShowMessage("Start"+ FormatFloat("00.",mm)); // вывод нужного повторения каждого вопроса ( целое число)
            for(i=0;i<aa;i++)
 
               if(pov[i]>mm)    // проверка  Если итый вопрос повторяеться больше чем нужно
               for(int ii=0;ii<aa;ii++)
               if(pov[ii]<mm){  // посиск вопросов повторения которых нужно увеличить
               for(iv=0;iv<n;iv++){ q=true;  // прогон всех вариантов
                for(j=0;j<c;j++){  if(!q) break;   // прогон вопросов в варианте . если вопрос  на который нужно заменить есть , выходим
                if(var[iv][j]==i)  // поиск  в варианте избыточного вопроса
                {
                i0=iv ;   // записываем индексы для замены
                jj=j;  // ShowMessage("Maybe");
                        for(int j0=0;j0<c;j0++)
                                if(var[iv][j0]==ii) // поиск вопроса  на который заменяемв в варианте , что бы не было 2х одиноковых
                                      { q= false; // ShowMessage("Not do");
                                          break; }
                                   }
 
                       } //for
                   if(q) {  q= false;     // замена
                        var[i0][jj]=ii;
                      // для просмотра замены  ShowMessage("Vsavkavar="+FormatFloat("00.",i0)+" питання "+FormatFloat("00.",jj)+"voros"+FormatFloat("00.", var[i0][jj])+"/n \n zzz"+FormatFloat("00.", i));
                        pov[i]--;
                        pov[i0]++;
                      //  ShowMessage("Done");
                                }
                                } //for
 
                  }//if
             }// RG
Добавлено через 6 минут
где-то начудил не могу понять где
Держите полный код, может будет понятней важно только эта часть ↑ что выше


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
{
int n,i,j,aa,mm,k,b,kk; bool q ,qq;  float m,a,c;
AnsiString s;
aa=StrToInt(Edit1->Text); // всего вопросов введено
a=StrToFloat(Edit1->Text);
 b=StrToFloat(Edit2->Text);n=StrToInt(Edit2->Text); // всего вариантов
c=StrToFloat(Edit3->Text);      // вопросов в варианте
 
    randomize();
std::set<int> cs;
int nn[100][100], var[100][100],pov[100];
m=b*c/a;
mm= b*c/a;  k=((aa*mm)-(b*c))*(-1);   //ShowMessage(k); ShowMessage(mm);
if(k>0)
for(i=0;i<k;i++)
pov[i]--;
//создания вариантов
if(aa<=n*c){
        for(i=0;i<n;i++){   cs.clear();
                for(j=0;j<c;j++){ q=true;
                        b=rand()%aa;
                        if((cs.find(b) == cs.end())&&(pov[b]<=mm)) {
                             pov[b]++;
                             cs.insert(b);
                             var[i][j]=b;
 
                             }
                             else{
                                while(q){
                                        b=rand()%aa;
                                          if((cs.find(b) == cs.end())&&(pov[b]<=mm)){
                                            pov[b]++;
                                            cs.insert(b);
                                                var[i][j]=b;
                                                q=false;
                                                }
                                            }
 
 
                                      }//else
                                } //for j
                        } //for i
 
 
        } else ShowMessage("Кількість питань менша ніж загальна кількість питань у варіантах");
         // Начало,  здесь ошибочный код
         int jj,i0,i1,iv;
        if(RadioGroup1->ItemIndex==0)    // включаю "балансировку " вопросов
         {ShowMessage("Start"+ FormatFloat("00.",mm)); // вывод нужного повторения каждого вопроса ( целое число)
            for(i=0;i<aa;i++)
 
               if(pov[i]>mm)    // проверка  Если итый вопрос повторяеться больше чем нужно
               for(int ii=0;ii<aa;ii++)
               if(pov[ii]<mm){  // посиск вопросов повторения которых нужно увеличить
               for(iv=0;iv<n;iv++){ q=true;  // прогон всех вариантов
                for(j=0;j<c;j++){  if(!q) break;   // прогон вопросов в варианте . если вопрос  на который нужно заменить есть , выходим
                if(var[iv][j]==i)  // поиск  в варианте избыточного вопроса
                {
                i0=iv ;   // записываем индексы для замены
                jj=j;  // ShowMessage("Maybe");
                        for(int j0=0;j0<c;j0++)
                                if(var[iv][j0]==ii) // поиск вопроса  на который заменяемв в варианте , что бы не было 2х одиноковых
                                      { q= false; // ShowMessage("Not do");
                                          break; }
                                   }
 
                       } //for
                   if(q) {  q= false;     // замена
                        var[i0][jj]=ii;
                      // для просмотра замены  ShowMessage("Vsavkavar="+FormatFloat("00.",i0)+" питання "+FormatFloat("00.",jj)+"voros"+FormatFloat("00.", var[i0][jj])+"/n \n zzz"+FormatFloat("00.", i));
                        pov[i]--;
                        pov[i0]++;
                      //  ShowMessage("Done");
                                }
                                } //for
 
                  }//if
             }// RG
 
 
          // end
 
 
 //***************************************************************************
//Вывод
  for (i=0;i<n;i++){
  Memo2->Lines->Add("******************");
  Memo2->Lines->Add("Варіант_№"+FormatFloat("000.",i+1));
 
if(CheckBox1->Checked){   AnsiString s1,s2,s3,s4;     int bb;
      // перетасовка. не вникайте
      for(int ii=0;ii<c;ii++){
      b=rand()%2+1;
bb=rand()%2+3; // Memo2->Lines->Add("i="+FormatFloat("000.",i)+" ii= "+FormatFloat("000.",ii)+"  "+var[i][ii]);
for(j=0;j<1;j++) {
s=Memo1->Lines->Strings[((var[i][ii]*5)+0)];
Memo2->Lines->Add(s);
s1= Memo1->Lines->Strings[((var[i][ii]*5)+1)];
s2= Memo1->Lines->Strings[((var[i][ii]*5)+2)];
s3= Memo1->Lines->Strings[((var[i][ii]*5)+3)];
s4=  Memo1->Lines->Strings[((var[i][ii]*5)+4)];
if((rand()%2)==0) {
if(b==1) {Memo2->Lines->Add(s1);Memo2->Lines->Add(s2);}  else{Memo2->Lines->Add(s2);Memo2->Lines->Add(s1);}
  if(bb==3) {Memo2->Lines->Add(s3);Memo2->Lines->Add(s4);}  else{Memo2->Lines->Add(s4);Memo2->Lines->Add(s3);}
         }else  {  if(bb==3) {Memo2->Lines->Add(s3);Memo2->Lines->Add(s4);}  else{Memo2->Lines->Add(s4);Memo2->Lines->Add(s3);}
                   if(b==1){  Memo2->Lines->Add(s1);Memo2->Lines->Add(s2);}  else{Memo2->Lines->Add(s2);Memo2->Lines->Add(s1);}
         }
                }
        }
       }
        else{
for(int ii=0;ii<c;ii++) // Memo2->Lines->Add("i="+FormatFloat("000.",i)+" ii= "+FormatFloat("000.",ii)+"  "+var[i][ii]);
for(j=0;j<5;j++) {
s=Memo1->Lines->Strings[((var[i][ii]*5)+j)];
Memo2->Lines->Add(s);
                }
 
}
}     // вывод использования вопросов
for(i=0;i<a;i++)
 Memo2->Lines->Add("pov"+FormatFloat("000.",pov[i])+" i= "+FormatFloat("000.",i));
  // вывод в какой вариант какой вопрос записан
  for(i=0;i<n;i++)  {Memo2->Lines->Add("*********");
     for(j=0;j<c;j++)
   Memo2->Lines->Add(" i="+FormatFloat("000.",i)+ "    j=" +FormatFloat("000.",j)+   "   var="+FormatFloat("000.", var[i][j]));
      }
 
}
0
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 20
23.05.2015, 22:01  [ТС]
Нужна помощь в оптимизации кода. С задачей которая была ранее решена и тема закрыта, создал заново . В общем я создал 2 варианта генерирования. первый, условно рандомный , где каждый вопрос может превышать повторения на единицу от среднего повторения , а второй балансировка повторений вопросов . Ошибка во втором. Вот как все работает .
Создаю множество что бы не повторялись вопросы в варианте и ещё один масив , что бы вести счетчик за использованием вопросов . рандомно кручу вопросы пока не забью все варианты . Дале что бы уравновесить количество использованных вопросов провожу поиск и замену вопроса но затирает не все . Если поможете буду Очень-Очень рад и благодарен
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int jj,i0,i1,iv;
        if(RadioGroup1->ItemIndex==0)    // включаю "балансировку " вопросов
         {ShowMessage("Start"+ FormatFloat("00.",mm)); // вывод нужного повторения каждого вопроса ( целое число)
            for(i=0;i<aa;i++)
 
               if(pov[i]>mm)    // проверка  Если итый вопрос повторяеться больше чем нужно
               for(int ii=0;ii<aa;ii++)
               if(pov[ii]<mm){  // посиск вопросов повторения которых нужно увеличить
               for(iv=0;iv<n;iv++){ q=true;  // прогон всех вариантов
                for(j=0;j<c;j++){  if(!q) break;   // прогон вопросов в варианте . если вопрос  на который нужно заменить есть , выходим
                if(var[iv][j]==i)  // поиск  в варианте избыточного вопроса
                {
                i0=iv ;   // записываем индексы для замены
                jj=j;  // ShowMessage("Maybe");
                        for(int j0=0;j0<c;j0++)
                                if(var[iv][j0]==ii) // поиск вопроса  на который заменяемв в варианте , что бы не было 2х одиноковых
                                      { q= false; // ShowMessage("Not do");
                                          break; }
                                   }
 
                       } //for
                   if(q) {  q= false;     // замена
                        var[i0][jj]=ii;
                      // для просмотра замены  ShowMessage("Vsavkavar="+FormatFloat("00.",i0)+" питання "+FormatFloat("00.",jj)+"voros"+FormatFloat("00.", var[i0][jj])+"/n \n zzz"+FormatFloat("00.", i));
                        pov[i]--;
                        pov[i0]++;
                      //  ShowMessage("Done");
                                }
                                } //for
 
                  }//if
             }// RG


Вот полный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
{
int n,i,j,aa,mm,k,b,kk; bool q ,qq;  float m,a,c;
AnsiString s;
aa=StrToInt(Edit1->Text); // всего вопросов введено
a=StrToFloat(Edit1->Text);
 b=StrToFloat(Edit2->Text);n=StrToInt(Edit2->Text); // всего вариантов
c=StrToFloat(Edit3->Text);      // вопросов в варианте
 
    randomize();
std::set<int> cs;
int nn[100][100], var[100][100],pov[100];
m=b*c/a;
mm= b*c/a;  k=((aa*mm)-(b*c))*(-1);   //ShowMessage(k); ShowMessage(mm);
if(k>0)
for(i=0;i<k;i++)
pov[i]--;
//создания вариантов
if(aa<=n*c){
        for(i=0;i<n;i++){   cs.clear();
                for(j=0;j<c;j++){ q=true;
                        b=rand()%aa;
                        if((cs.find(b) == cs.end())&&(pov[b]<=mm)) {
                             pov[b]++;
                             cs.insert(b);
                             var[i][j]=b;
 
                             }
                             else{
                                while(q){
                                        b=rand()%aa;
                                          if((cs.find(b) == cs.end())&&(pov[b]<=mm)){
                                            pov[b]++;
                                            cs.insert(b);
                                                var[i][j]=b;
                                                q=false;
                                                }
                                            }
 
 
                                      }//else
                                } //for j
                        } //for i
 
 
        } else ShowMessage("Кількість питань менша ніж загальна кількість питань у варіантах");
         // Начало,  здесь ошибочный код
         int jj,i0,i1,iv;
        if(RadioGroup1->ItemIndex==0)    // включаю "балансировку " вопросов
         {ShowMessage("Start"+ FormatFloat("00.",mm)); // вывод нужного повторения каждого вопроса ( целое число)
            for(i=0;i<aa;i++)
 
               if(pov[i]>mm)    // проверка  Если итый вопрос повторяеться больше чем нужно
               for(int ii=0;ii<aa;ii++)
               if(pov[ii]<mm){  // посиск вопросов повторения которых нужно увеличить
               for(iv=0;iv<n;iv++){ q=true;  // прогон всех вариантов
                for(j=0;j<c;j++){  if(!q) break;   // прогон вопросов в варианте . если вопрос  на который нужно заменить есть , выходим
                if(var[iv][j]==i)  // поиск  в варианте избыточного вопроса
                {
                i0=iv ;   // записываем индексы для замены
                jj=j;  // ShowMessage("Maybe");
                        for(int j0=0;j0<c;j0++)
                                if(var[iv][j0]==ii) // поиск вопроса  на который заменяемв в варианте , что бы не было 2х одиноковых
                                      { q= false; // ShowMessage("Not do");
                                          break; }
                                   }
 
                       } //for
                   if(q) {  q= false;     // замена
                        var[i0][jj]=ii;
                      // для просмотра замены  ShowMessage("Vsavkavar="+FormatFloat("00.",i0)+" питання "+FormatFloat("00.",jj)+"voros"+FormatFloat("00.", var[i0][jj])+"/n \n zzz"+FormatFloat("00.", i));
                        pov[i]--;
                        pov[i0]++;
                      //  ShowMessage("Done");
                                }
                                } //for
 
                  }//if
             }// RG
 
 
          // end
 
 
 //***************************************************************************
//Вывод
  for (i=0;i<n;i++){
  Memo2->Lines->Add("******************");
  Memo2->Lines->Add("Варіант_№"+FormatFloat("000.",i+1));
 
if(CheckBox1->Checked){   AnsiString s1,s2,s3,s4;     int bb;
      // перетасовка. не вникайте
      for(int ii=0;ii<c;ii++){
      b=rand()%2+1;
bb=rand()%2+3; // Memo2->Lines->Add("i="+FormatFloat("000.",i)+" ii= "+FormatFloat("000.",ii)+"  "+var[i][ii]);
for(j=0;j<1;j++) {
s=Memo1->Lines->Strings[((var[i][ii]*5)+0)];
Memo2->Lines->Add(s);
s1= Memo1->Lines->Strings[((var[i][ii]*5)+1)];
s2= Memo1->Lines->Strings[((var[i][ii]*5)+2)];
s3= Memo1->Lines->Strings[((var[i][ii]*5)+3)];
s4=  Memo1->Lines->Strings[((var[i][ii]*5)+4)];
if((rand()%2)==0) {
if(b==1) {Memo2->Lines->Add(s1);Memo2->Lines->Add(s2);}  else{Memo2->Lines->Add(s2);Memo2->Lines->Add(s1);}
  if(bb==3) {Memo2->Lines->Add(s3);Memo2->Lines->Add(s4);}  else{Memo2->Lines->Add(s4);Memo2->Lines->Add(s3);}
         }else  {  if(bb==3) {Memo2->Lines->Add(s3);Memo2->Lines->Add(s4);}  else{Memo2->Lines->Add(s4);Memo2->Lines->Add(s3);}
                   if(b==1){  Memo2->Lines->Add(s1);Memo2->Lines->Add(s2);}  else{Memo2->Lines->Add(s2);Memo2->Lines->Add(s1);}
         }
                }
        }
       }
        else{
for(int ii=0;ii<c;ii++) // Memo2->Lines->Add("i="+FormatFloat("000.",i)+" ii= "+FormatFloat("000.",ii)+"  "+var[i][ii]);
for(j=0;j<5;j++) {
s=Memo1->Lines->Strings[((var[i][ii]*5)+j)];
Memo2->Lines->Add(s);
                }
 
}
}     // вывод использования вопросов
for(i=0;i<a;i++)
 Memo2->Lines->Add("pov"+FormatFloat("000.",pov[i])+" i= "+FormatFloat("000.",i));
  // вывод в какой вариант какой вопрос записан
  for(i=0;i<n;i++)  {Memo2->Lines->Add("*********");
     for(j=0;j<c;j++)
   Memo2->Lines->Add(" i="+FormatFloat("000.",i)+ "    j=" +FormatFloat("000.",j)+   "   var="+FormatFloat("000.", var[i][j]));
      }
 
}
вот старая ссылка по этой задаче
Разделить множество элементов по группам с минимумом повторений
Спасибо за внимание

Добавлено через 22 часа 55 минут
надеюсь кто-то сможет указать на мою ошибку)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2015, 22:01
Помогаю со студенческими работами здесь

Строки и множества. Случайным образом заполнить множество рабочих дней в цикле из 6 повторений
Строки и множества. Случайным образом заполнить множество рабочих дней в цикле из 6 повторений.

Распределение элементов по группам
Возникла проблема в одной задаче, никак подход не могу найти: Вася решил организовать турнир. Он получил n коробок с призами от...

Количество элементов между минимумом и максимумом
Пожалуйста помогите вот с этой задачей!!! Написать программу, которая для целочисленной матрицы 10х20 определяет среднее...

Разделить большой текстовый файл на множество файлов
Здравствуйте! Помогите, пожалуйста, разобраться. Есть с десяток txt-файлов с примерно таким содержанием: *слово или фраза из...

Распределение элементов справочника по группам
Здраствуйте. Как можно изменить у существующего элемента справочника родителя, т.е. переместить его в определённую группу. При создании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru