Перестановка строк
Задать три строки с клавиатуры и с помощью стандартных функций осуществить склейку этих строк всеми возможными способами (сделать максимальное кол-во перестановок) и записать новые строки. Вывести на экран изначальную и получившиеся строки.
Возможно ли как-то загнать этот код в цикл? Есть ли какие-нибудь иные способы, при которых будет использоваться цикл?
char a[25], b[25], c[25];
gets(a);
gets(b);
gets(c);
printf("%s %s %s\n", a, b, c);
printf("%s %s %s\n", a, c, b);
printf("%s %s %s\n", b, a, c);
printf("%s %s %s\n", b, c, a);
printf("%s %s %s\n", c, a, b);
printf("%s %s %s\n", c, b, a);
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
Возможно ли как-то загнать этот код в цикл?
char a[25], b[25], c[25];
gets(a);
gets(b);
gets(c);
char* strings[3];
// в strings[0] записываем первую строку
// в strings[1] записываем вторую строку
// в strings[2] записываем третью строку
strings[0] = (char*)a;
strings[1] = (char*)b;
strings[2] = (char*)c;
char res[128];
for (int pos1 = 0; pos1 < 3; pos1++)
{
for (int pos2 = 0; pos2 < 3; pos2++)
{
for (int pos3 = 0l; pos3 < 3; pos3++)
{
if ((pos1 == pos2) || (pos1 == pos3) || (pos2 == pos3))
continue;
res[0] = '\0';
strcat(res, strings[pos1]);
strcat(res, strings[pos2]);
strcat(res, strings[pos3]);
printf("%s\n", res);
}
}
}
Есть ли какие-нибудь иные способы, при которых будет использоваться цикл?