![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Agarwaen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.1.2007 Репутация: нет Всего: нет |
Задание: вводится строка и ключевой символ. Нужно найти номера позиций этого символа в строке методом деления пополам. Вот код, но он ищет только одну позицию. Посоветуйте что можно сделать.
Это сообщение отредактировал(а) Agarwaen - 7.1.2007, 12:30 |
|||
|
||||
| Kuvaldis |
|
||||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Agarwaen,
Метод деления пополам применяется только к отсортированным данным Есть обобщение данного метода, которое ищет именно ПЕРВОЕ вхождение символа в строку (остальные получить несложно, нужно лишь запустить цикл: пока символ справа равен искомому, увеличивать счетчик и продвигаться по сортированной строке вправо)
Т.е. увеличиваем индекс только при поиске в правой половине Это сообщение отредактировал(а) Kuvaldis - 7.1.2007, 13:09 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
||||
|
|||||
| Agarwaen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.1.2007 Репутация: нет Всего: нет |
Не пойму как это работает. Можно поподробней?
|
|||
|
||||
| Agarwaen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.1.2007 Репутация: нет Всего: нет |
Вот функция, возвращает 1 значение. Как её можно изменить?
|
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Agarwaen,
-------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Agarwaen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.1.2007 Репутация: нет Всего: нет |
Огромное спасибо. И ещё такой вопрос: какой метод сортировки самый быстрый?
|
|||
|
||||
| KpoHyc |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 23.12.2006 Где: Санкт-Петербург Репутация: нет Всего: 5 |
Agarwaen, так и называйется "Быстрая сортировка" Чарльз Хоар автор...
--------------------
AScript + Pascal + C -> C++ ->C#Adobe Photoshop 7.0/CS 2.0 + GIMP+ Visual Studio .NET(sp1)/2005 pro(sp1) |
|||
|
||||
| Agarwaen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.1.2007 Репутация: нет Всего: нет |
Странно, когда вводишь в строке пробел, то он сбрасывает в ключ первый символ и всё. В чём дело?
|
|||
|
||||
| Agarwaen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.1.2007 Репутация: нет Всего: нет |
Блин не пойму почему строка записывается в buffer до первого пробела.
|
|||
|
||||
| Agarwaen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.1.2007 Репутация: нет Всего: нет |
Вот посмотрите этот код. Какие общие замечания? По-прежнему есть проблемы с пробелами во входной строке, может кто подскажет. И ещё насколько здесь оправдано использование ввода/вывода через потоки? Заранее спасибо.
|
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Agarwaen,
Такой принцип работы у cin и scanf при работе со строками. Чтобы изменить ситуацию, можно: 1. С: fgets(char* str, int maexlen); используем эту функцию, подробности по F1 2. C++: cin.getline(char* str, int maxlen); подробности также по F1 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Agarwaen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.1.2007 Репутация: нет Всего: нет |
Спасибо, ты мне очень помог. Использую наверно gets(buffer).
|
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Существует стандартная функция сортировки "qsort".
Ей сортировать лучше и быстрее всего.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |