![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Энжи |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
Реализовать класс String для работы со строками символов. Память под строку выделять динамически. Перегрузить операторы ==,>,<,!= и операции ввода-вывода в поток.В функции main привести примеры реализации указанных операций.
|
|||
|
||||
| Энжи |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
вот что получилось,но все равно не работает....
|
|||
|
||||
| t_gran |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Признаюсь, такого винегрета я уже давно не видел.
И не будет работать. Такой пример с безграмотным использование указателей я давно уже не видел. Вот как должна выглядеть ф-ия main исходя из правильности, а не ваших соображений.
В этом случае ваш код будет верен и выведет:
P.S.: Извините за мою грубость, но в таких вопросах могу только так. -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||||
|
|||||||
| Энжи |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
t_gran, спасибо большое за ответ и простите мне мою безграммотность - я в указателях как свинка в апельсинах
исправила по Вашему совету и выдает ошибки на строчках
а по поводу
должно было выводить строчку 234 (проверяла работает ли перегрузка) и видимо тоже где-то накосячила :( |
||||
|
|||||
| t_gran |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Как так? Вы ничего не напутали? Хотя если вы пользуетесь DOS-овским TC, то я не удивлён. Данный код компилил компиляторами: gcc, cl (MSVS-2005), bcc32 (CBuilder 6). Нигде ошибок не возникало, да и не могло быть.
P.S.: Код ваш. Кроме main ничего не менял. Это сообщение отредактировал(а) t_gran - 15.12.2009, 03:49 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||
|
|||||
| Энжи |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
Да, я использую досовский...попробую билдером..
простите еще раз мою неграммотность, но правильно ли я вызываю перегруженный оператор или это необходимо делать по-другому??
|
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Да нет, с точки зрения компилятора - всё верно. Только результата видно не будет. Если нужен результат, то логично выполнить проверку.
К слову: не люблю и не хочу агетировать, и прекрасно понимаю, что во многих университетах используют для обучения старые DOS-овские компиляторы, но всё же советую перейти на более современный компилятор который учитывает последние стандарты C++. Тогда у вас проблем поубавится с изучением языка по книгам и подобных ошибок, как в данном случае, не будет. В моём университете стояли tc-3.0, gcc-3.4.2 и bcc32 (CBuilder 6), а на некоторых и cl (MSVC), поэтому у меня никогда проблем не возникало. И немного рекламы Это сообщение отредактировал(а) t_gran - 15.12.2009, 11:37 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| Энжи |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
t_gran, спасибо за Ваши ответы
у нас в универе есть все указанные Вами компиляторы...кроме может линуксного по поводу программы : перекомпилила в билдере - все работает как Вы и говорили..изменила вызов перегрузки..в результате main() выглядит вот так:
перегрузку << тоже изменила :
Остальное без изменений....В результате компилятор вообще пропускает сравнение...как первое != так и ==..может ошибка в коде функции перегрузки?? И еще такой вопросик - когда ставлю
компилятор ругается
чувствую себя неудачницей может он хочет чтобы я перегрузку в класс внесла? |
||||||||
|
|||||||||
| t_gran |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Правильно, и будет ругаться. Дело в том, что вы перенаправление '>>' не верно переопределили. Тут нужно использовать поток istream, а не ostream:
Перегрузка '==' отлично работает, а что касается '!=' то ваш алгоритм действительно не корректно работает, всегда возвращает false (т.е. 0). Предлагаю, т.к. '==' у вас работает верно, то на базе него выполнить и '!=':
И совет, для теста каждого переопределённого метода используйте следующий код:
Так, вы легко изменяя параметры p[1] и p[2] сможете проверить правильность выполнения каждого из методов отдельно. Это сообщение отредактировал(а) t_gran - 16.12.2009, 03:57 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||||||
|
|||||||||
| Энжи |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
t_gran, огромное Вам спасибо
Задачка решена, в итоге код выглядит :
Еще раз гигантское спасибо t_gran!Поставила бы + но нету 100 сообщений..несправедливо... |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |