Консультация № 179984
22.09.2010, 03:31
0.00 руб.
0 3 1
Добрый вечер.
Вопрос, думаю, не сложный.
В ListBox добавляются слова (кол-во может быть разным). Нужно вывести в Memo все парные комбинации этих слов.
Пример: ввели слова: Один, Два и Три.

На выходе в Memo получаем связки:

ОдинДва
ДваОдин
ОдинТри
ТриОдин
ДваТри
ТриДва

Помогите пожалуйста как это проще реализовать. Заранее спасибо.

C++ Builder

Обсуждение

Неизвестный
22.09.2010, 06:06
общий
Москвин Роман:
Привет, а прям билдер нужен? Просто с++ не пойдёт?
Неизвестный
22.09.2010, 12:07
общий
Привет. Ну, собственно, алгоритм и интересен в первую очередь.
Неизвестный
22.09.2010, 12:46
общий
это ответ
Здравствуйте, Москвин Роман.

Ну, например, так (приложение), если порядок выдачи строк не критичен.

Я сделал консольное приложение. Переделать в Лист + Мемо - можно просто.

1. Набираем массив сток.
2. Бежим по нему двойным циклом. Если индексы не совпадают, складываем две строки и выводим(складываем в мемо).
Я специально выделил строку для вывода в отдельную переменную, чтоб было нагляднее.

Приложение:
#include <string>
#include <vector>

std::vector<std::string> vStrings;

int main(int argc, char* argv[])
{
char szData[1024];

printf("Enter words, type '-' to exit:\n");

// GET
while(1)
{
scanf("%s", szData);
if(szData[0] == '-')
break;
vStrings.push_back(szData);
}

// PROCESS
std::string str;
int i, j;
int iCount = vStrings.size();
//
for(i=0; i<iCount; i++)
{
for(j=0; j<iCount; j++)
{
if(i == j)
continue;
str = vStrings[i] + vStrings[j];

// OUT
printf(str.c_str());
printf("\n");
}
}


// CLEAR
vStrings.clear();

return 0;
}
5
Спасибо. Работает как надо.
Форма ответа