Заменить
come:
for (int j = 0; j < i; j++)
{
if (a[i] == a[j])
{
if (i % 2 == 0)
{
a[i] = 65 + rand() % 26; goto come;
}
else
{
a[i] = 97 + rand() % 26; goto come;
}
}
else
continue;
}
с
int loop=0;
do
{
for (int j = 0; j < i; j++)
{
if (a[i] == a[j])
{
if (i % 2 == 0)
{
a[i] = 65 + rand() % 26;
}
else
{
a[i] = 97 + rand() % 26;
}
loop=1;
break;
}
else
loop=0;
}
}while(loop);
Это более общее решение, чем некоторые другие ответы. Он основан на понимании того, что когда вы найдете совпадение (a[i] == a[j])
, вы просто захотите снова запустить основной цикл for
сверху вниз. (Вы можете достичь того же результата, установив j
в -1, но это не сработает во всех ситуациях, и, конечно, нет, если j
должно быть unsigned
)