Как избавиться от повторений в моем коде?.Я так понимаю,необходимо сохранять результаты куда-то(в массив?),а потом сравнивать с новым рандомом,и,если что,вызывать rand заново.Но никак не могу додуматься как это реализовать. Дайте совет или посоветуйте где можно почитать о способе решения моей проблемы. Благодарю за помощь.
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <stdio.h>
using namespace std;
int main()
{
int m,k,i,z,j,h=0,kolvo,f,g=0, massiv[g];
char str1[100];
srand(time(NULL));
kolvo=0;
while (kolvo<15)
{
for(i=0;i<9;i++)
{
m = 97+rand()%3;
str1[i]=m;
}
massiv[g]={str1[0],str1[1],str1[2],str1[3],str1[4],str1[5],str1[6],str1[7],str1[8]}; k = 3+rand()%9;
str1[k]='\0';
z=0;
j=0;
f=0;
int length_string = strlen(str1);
//-----------------------------
{break;}
if(*(str1)=='a'&&*(str1+1)=='c')
for(i=0;i<(length_string);i++)
{
if(*(str1+i)=='c')
z++;
if(*(str1+i)=='a')
{
if(*(str1+i+1)!='a')
// if(*(str1+i+2)!='b')
j++;
f++;
}
}
//-----------------------------
if(z==2&&f%2==0&&j==f)
{
printf("%s\n",str1);
kolvo++;
g++;
}
//-----------------------------
}
}
Вот простейший код, генерирующий 16 неповторяющихся чисел длиной 9, соответствующих вашим правилам:
char s[] = "acxbxbxbx";
for(int i = 0; i < 16; ++i)
{
for(int j = 0; j < 4; ++j)
s[2+j*2] = 'a' + ((i >> j)&1);
cout << s << endl;
}
Если очень тянет на рандомность - ну, добавьте вставку в случайное место второго символа c
, например...
Ну, а если так уж хотите свой вариант - то @avp вам уже подсказал, как...
Вот, например:
int main()
{
set<string> already;
for(int i = 0; i < 15; ++i)
{
string s;
for(;;)
{
s = "ac";
bool c2 = false;
for(int l = rand()%5+3; l >= 0; --l)
{
string choice = "b";
if (!c2) choice += 'c';
if (s.back() != 'a') choice += 'a';
char c = choice[rand()%choice.length()];
if (c == 'c') c2 = true;
s += c;
}
if (!already.count(s)) break;
};
already.insert(s);
}
for(const auto& s: already)
cout << s << endl;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
С помощью чего можно преобразовать DICOM Image to JPG? Есть библиотеки помимо DCMTK?
Всем здравствуйте! Есть вот такой кусок кодаВ конце кода пользователю предлагаю сделать выбор: играть дальше или отказаться
Есть библиотека для работы с файлами DICOM(специфические медицинские изображения) - https://dicomoffis