1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Доброго времени суток, появилась проблема: есть структура, читаю из файла, нужно вывести только те спектакли, которые поставленны введенным режиссером. Проблема заключается в том, что в структуре все данные объявлены как string, а не char (тут я знаю как сортировать по алфавиту), а замена стринга на чар приводит к ошибке Lvalue required, если не ошибаюсь, пытается присвоить что-то константе mas[20], хотя этого нельзя сделать. Кто знает подскажите пожалуйста.
а замена стринга на чар приводит к ошибке Lvalue required
Что-то я совсем ничего не понимаю. У тебя фамилия режиссера - это std::string? Почему ты хочешь это менять на char? Смысл в чем? Второе: почему не воспользоваться стандартным алгоритмом std::sort? Зачем делать свою сортировку? Зачем вообще делать сортировку? Просто пройти по массиву и проверить совпадение фамилий. Почему в конце концов массив, а не std::vector, в котором для поиска совпадений существует целый ряд специальных функций? У тебя С++ же вроде, что ж ты не используешь его?
Что-то я совсем ничего не понимаю. У тебя фамилия режиссера - это std::string? Почему ты хочешь это менять на char? Смысл в чем? Второе: почему не воспользоваться стандартным алгоритмом std::sort? Зачем делать свою сортировку? Зачем вообще делать сортировку? Просто пройти по массиву и проверить совпадение фамилий. Почему в конце концов массив, а не std::vector, в котором для поиска совпадений существует целый ряд специальных функций? У тебя С++ же вроде, что ж ты не используешь его?
стандартную знаю сортировку, он будет сортировать фамилию по алфавиту? т.е сравнивает коды символов и упорядочивает их? просто как-то про это не подумал
// Я вот это имел в виду: bool operator < (const theatre &a, const theatre &b) { return a.avtor < b.avtor; }
- проект будет компилироваться.
А вообще - я тебя не понимаю. Ты пишешь, что тебе надо получить информацию о спектаклях, поставленных определенным режиссером, и тут же приплетаешь зачем-то if (c == mas[i].spekt). Просил что ввести? Фамилию режиссера. При чем тут спектакль? На фиг тут сортировки, все элементарно:
// Я вот это имел в виду: bool operator < (const theatre &a, const theatre &b) { return a.avtor < b.avtor; }
- проект будет компилироваться.
если честно, то я не очень понимаю что значит переопределить оператор, насколько я помню нам мимолетом их рассказали в классах, без пояснений и т.д.
Цитата(volvo @ 21.12.2010 16:25)
А вообще - я тебя не понимаю. Ты пишешь, что тебе надо получить информацию о спектаклях, поставленных определенным режиссером, и тут же приплетаешь зачем-то if (c == mas[i].spekt). Просил что ввести? Фамилию режиссера. При чем тут спектакль? На фиг тут сортировки, все элементарно:
да я в колледж спешил, с разгона и впихнул вместо режиссера спектакль, если почитать внимательно cout, то там написано "введите фамилию режиссера" с кем не бывает. И еще. Сортировки нет, но по идее её и не должно быть, так как почитав скудный запас информации в интернете, надо как-то обращатсья к этому оператору, но и то, там были примеры с классами и не с булевыми значениями. Если не тяжело, можете пояснить или дать ссылку чтобы до конца разобраться с этой долей языка
// пишем свой функтор, который будет сравнивать поле структуры со строкой struct finder : std::binary_function<theatre, string, bool> { bool operator()(theatre const &in, string id) const { return (id == in.rezhiser); } };
// ...
// и, наконец, как сделать поиск по введенному режиссеру: case 5: { string to_find; cout << "Введите фамилию режиссера: ", cin.ignore(), getline(cin, to_find); remove_copy_if(teatr.begin(), teatr.end(), std::ostream_iterator<theatre>(std::cout,"\n"), std::not1(bind2nd(finder(), to_find))); break; }
Вот это - именно "плюсы". А делать все на циклах - это несерьезно...
Книгу? Я пользуюсь "The C++ Standard Library: A Tutorial and Reference" Н. Джосаттиса, если надо что-то из stl-ных алгоритмов посмотреть. Про использование std::sort там тоже написано...