![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Unknown |
![]()
Сообщение
#1
|
Гость ![]() |
В общем, вот само задание:
Написать и протестировать функции сортировки записей и поиска их по ключам для следующих методов: линейный выбор с обменом, бинарный поиск. Запись имеет три поля, например, фамилия, имя, номер телефона. Иметь не менее 30 записей. Поиск - по любому ключу, задаваемому из меню. Вот то, что я сделал: #include <iostream.h> Этот кусок программы должен заполнять базу данных: имя, фамилию и телефон. Имя и фамилия - случайный набор букв (заглавных латинских), телефон - случайная последовательность из 7 цифр. Где здесь ошибка? Допустим, есть у меня эта база, а что дальше делать? |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Во-первых, если ты уже написал, что это С++, и пользуешься классами, то почему бы тебе не воспользоваться и конструкторами, чтобы не делать генерацию вручную, а она проводилась бы автоматически?
#include <iostream.h>Вот так, например... Цитата а что дальше делать? А теперь пиши процедуры сортировки, которые тебе нужны (в Паскалевском FAQ-е есть эти методы: Методы сортировок + Бинарный (двоичный) поиск ), также есть описание способа как из меню выбрать поле для сортировки по нему: Сортировка записи с процедуройПосмотри, как это делается... |
Unknown |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Хмм, чего-то я не пойму... Линейная сортировка (она же пузырьковая) - это упорядочение всех записей в базе по определенному условию - правильно? В порядке возрастания/убывания номеров и т.п., да? В задании написано - "Поиск - по любому ключу, задаваемому из меню." Т.е. фамилии/имена в алфавитном порядке, номера телефонов в порядке возрастания? или как?
С бинарным поиском - то же самое? Т.е. задали фамилию Иванов - ищем местоположение буквы "И", потом - "в" и т.п.? Цитата Во-первых, если ты уже написал, что это С++, и пользуешься классами, то почему бы тебе не воспользоваться и конструкторами, чтобы не делать генерацию вручную, а она проводилась бы автоматически? Конструктор - это та функция qwe(), которая описана в классе qwe? А зачем ее описание вынесено за пределы описания класса? Или так обязательно делать? Сорри, за глупые вопросы... -------------------- go ask Alice
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата С бинарным поиском - то же самое? Т.е. задали фамилию Иванов - ищем местоположение буквы "И", потом - "в" и т.п.? Все гораздо проще... Если ты задал фамилию "Иванов", значит, сортируешь массив по фамилии, и ищешь бинарным поиском (ты прочел по ссылке, вообще, как это делается? Интервал поиска каждый раз уменьшается в 2 раза, благодаря чему поиск идет ГОРАЗДО быстрее, чем полный просмотр всего массива) эту фамилию ... То есть, алгоритм такой: меню - что будете искать (имя, фамилию или телефон)? Выбрал, скажем, "Фамилию" - программа тебя спрашивает: "А какую именно фамилию искать будем?" Ты вводишь, и она ищется...Аналогично - по другим ключам... Цитата А зачем ее описание вынесено за пределы описания класса? А нет смысла оставлять его внутри класса, подстановкой конструктор все равно не будет, так как в нем используются циклы, следовательно это будет обычный вызов функции - поэтому я вынес описание из класса, (1) чтобы не было предупреждения компилятора, и (2) чтобы было сразу видно, что ЭТО - не подстановка (не inline)... |
Unknown |
![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Я к тому, что если в базе есть фамилии Иванов и Иванченко - тогда как (записи же отсортированы в алфавитном порядке, да?)? Вот взяли мы 15-й элемент и посмотрели, а там - Лыков. Значит, до (л<и). Взяли 7 - Иванченко. Значит, до (т.к. и=и, в=в, а=а, н=н, о<ч).
Все правильно? Цитата Ты вводишь, и она ищется... Сначала список сортируется методом пузырька, потом ищется нужный элемент, так? -------------------- go ask Alice
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Да что тебя так тянет сравнивать ПОБУКВЕННО? Кто же это делает? strcmp для кого? Сравниваешь СТРОКУ со СТРОКОЙ... Переливать из пустого в порожнее заканчиваю. Я уже дал всю необходимую информацию... Теперь твоя очередь это реализовать (хотя бы начать)...
|
Unknown |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Вот, что я сделал:
#include <iostream.h> Пока только сортировка. Где ошибка? -------------------- go ask Alice
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата Где ошибка? Откомпилируй программу, увидишь... Что тебе здесь, компиляторы сидят? ![]() "Где ошибка"? Ладно бы спросил, "Как исправить, пробовал вот это и вот это - не получается..." |
Unknown |
![]()
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Ошибка такая: Lvalue required на строке
ch=base[j].name;base[j].name=base[j+1].name;base[j+1].name=ch; Это раз, и как ее исправить я не знаю.... А два - это то, что я упорядочивал только один параметр всех записей, при этом не трогая остальные... ![]() Ща попробую исправить -------------------- go ask Alice
|
Unknown |
![]()
Сообщение
#10
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Уф, вроде все получилось:
#include <iostream.h> volvo, огромное спасибо за помощь! Сообщение отредактировано: Unknown - 19.12.2006 21:10 -------------------- go ask Alice
|
Unknown |
![]()
Сообщение
#11
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Все-таки ошибки имеют место быть...
![]() Во-первых, был выбран не тот метод сортировки (в вашем факе пузырьковая и линейная с обменом - одно и то же, а в методичке нашего препода - разные вещи...), но это я исправил (см. выше) Во-вторых, если заданный элемент в бинарном поиске - первый, то программа ошибается... Может кто-нибудь помочь с этим? -------------------- go ask Alice
|
![]() ![]() |
![]() |
Текстовая версия | 27.07.2025 4:10 |