spamsink: (Default)
[personal profile] spamsink
Фён.



(C++) Есть у нас объекты двух классов: Master и Slave. У Slave есть метод Master* getMaster(). Есть у нас два списка указателей на эти классы: masterList и slaveList, причем известно, что на каждый объект из masterList ссылается не более одного объекта из slaveList. Нужно построить какой-нибудь sortedSlaveContainer (той же мощности, что и masterList), в котором для любого не-NULL элемента его расстояние от головы контейнера равно расстоянию его мастера от головы masterList.

Индийское решение:

1. Создаем вектор структур (Master*master, Slave*slave, int index), заполняем из masterList, инкрементируя index. Поле slave = NULL.
2. Сортируем этот вектор по значению указателя master.
3. Проходим по slaveList, находя соответствующий Master в векторе с помощью двоичного поиска (std::lower_bound!) и заполняя поле slave.
4. Сортируем вектор по полю index.
5. Из полей slave полученного вектора создаем sortedSlaveList.
6. Profit!

Date: 2009-05-14 12:52 am (UTC)
From: [identity profile] http://users.livejournal.com/_tsvetkov_/
не понимаю я по-вашему

Date: 2009-05-14 01:08 am (UTC)
From: [identity profile] http://users.livejournal.com/_tsvetkov_/
а если проблемы с позвоночником?

Date: 2009-05-14 02:22 pm (UTC)
From: [identity profile] sab123.livejournal.com
Это все фигня. Гораздо интереснее вопрос о том, как изменить, скажем, третий символ в строке. Решение такое:

1. Делаем malloc нового массива
2. Делаем strncpy первых двух символов на новое место.
3. Создаем массив из двух символов. Туда засовываем новый третий символ и \0.
4. Делаем strcat нового массива с третим символом.
5. Делаем strcat хвоста изначальной строки.
6. Делаем strcpy на изначальное место.
7. Profit!

Date: 2009-05-14 04:02 pm (UTC)
From: [identity profile] parovoz.livejournal.com
Собственно говоря, это не так страшно. А вот когда просишь студента прочитать многосотмегабайтный текстовой файл в буфер, а он пишет:

while (1 == fscanf (file, "%c", &buffer[i])) i++;

Date: 2009-05-14 04:26 pm (UTC)
From: [identity profile] parovoz.livejournal.com
...неторопливый.
Page generated Mar. 6th, 2026 02:23 am
Powered by Dreamwidth Studios