| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++] Классы ресурсоёмких объектов |
| Автор: Mcicool 3.11.2006, 00:51 |
| Задача: Определить класс "набор слов" с закрытыми компонентами: число слов и динамический массив с элементами типа string, каждый из которых представляет отдельное слово. (Слово - последовательность русских или английских букв - никаких других символов в слове не должно быть.) Ввести все методы, присущие классу ресурсоемких объектов. Предусмотреть конструктор для формирования объекта класса на основе строки (string), содержащей некоторый текст. Предусмотреть в классе перегрузку операций для ввода-вывода (<<, >>) и ,если потребуется, любые средства, необходимые для решения основной задачи. В основной программе читать по строкам текстовый файл (имя файла ввести с клавиатуры). Для каждой прочитанной строки формировать объект класса "набор слов". Анализируя создаваемые объекты, вывести объект (набор слов) с максимальным количеством слов и последний из объектов, количество слов в котором равно заданному с клавиатуры числу. |
| Автор: Oleg_Ci 3.11.2006, 16:34 | ||
Что-то на подобие этого ?
|
| Автор: Mcicool 3.11.2006, 17:35 |
| Ты не мог бы камменты разместить. Спасибо )) 5 ошибок: C:\Documents and Settings\Mcicool\Ðàáî÷èé ñòîë\Cpp\prog2.cpp(22) : error C2248: 'line' : cannot access private member declared in class 'Word' C:\Documents and Settings\Mcicool\Ðàáî÷èé ñòîë\Cpp\prog2.cpp(10) : see declaration of 'line' C:\Documents and Settings\Mcicool\Ðàáî÷èé ñòîë\Cpp\prog2.cpp(26) : error C2248: 'line' : cannot access private member declared in class 'Word' C:\Documents and Settings\Mcicool\Ðàáî÷èé ñòîë\Cpp\prog2.cpp(10) : see declaration of 'line' C:\Documents and Settings\Mcicool\Ðàáî÷èé ñòîë\Cpp\prog2.cpp(26) : error C2248: 'line' : cannot access private member declared in class 'Word' C:\Documents and Settings\Mcicool\Ðàáî÷èé ñòîë\Cpp\prog2.cpp(10) : see declaration of 'line' C:\Documents and Settings\Mcicool\Ðàáî÷èé ñòîë\Cpp\prog2.cpp(37) : error C2593: 'operator >>' is ambiguous C:\Documents and Settings\Mcicool\Ðàáî÷èé ñòîë\Cpp\prog2.cpp(37) : fatal error C1903: unable to recover from previous error(s); stopping compilation Error executing cl.exe. |
| Автор: Oleg_Ci 3.11.2006, 19:35 | ||
| А компилятор какой у вас ? Я проверял на WS2003 и Borland C++ Builder6, Dev-C++ у меня без ошибок...
|
| Автор: Mcicool 3.11.2006, 23:19 |
| У меня Visual C++. Пишет те же ошибки. Кстати, я вот честно не понимаю, чем компиляторы отличаются? Добавлено @ 23:21 Кстати. А зачем используется итератор? Я читал, но никак не могу понять, что это по-русски значит. |
| Автор: Oleg_Ci 6.11.2006, 14:29 | ||||||
Насочинял ещё чего-то
|
| Автор: Mcicool 6.11.2006, 17:31 |
| Обалдеть, буду теперь сидеть разбираться. Спасибо! |
| Автор: Mcicool 7.11.2006, 18:21 |
| Я так и не смог проверить работоспособность прораммы ( Как это все в один файл засунуть? |
| Автор: Oleg_Ci 7.11.2006, 19:11 | ||
Mcicool, смотри внимательней, могут-быть ошибки
|
| Автор: Mcicool 7.11.2006, 19:30 |
| 14 ошибок ))) error C2143: syntax error : missing ';' before '/' c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(1) : error C2018: unknown character '0xd4' c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(1) : error C2018: unknown character '0xe0' c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(1) : error C2018: unknown character '0xe9' c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(1) : error C2018: unknown character '0xeb' c:\program files\microsoft visual studio\vc98\include\errno.h(29) : error C2143: syntax error : missing ';' before '{' c:\program files\microsoft visual studio\vc98\include\errno.h(29) : error C2447: missing function header (old-style formal list?) c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(189) : error C2374: 'i' : redefinition; multiple initialization c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(187) : see declaration of 'i' c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(203) : error C2593: 'operator <<' is ambiguous c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(205) : error C2593: 'operator >>' is ambiguous c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(207) : error C2593: 'operator <<' is ambiguous c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(209) : error C2593: 'operator <<' is ambiguous c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(224) : error C2593: 'operator >>' is ambiguous c:\documents and settings\mcicool\ðàáî÷èé ñòîë\cpp\prog8\main.cpp(226) : error C2593: 'operator <<' is ambiguous Error executing cl.exe. main.obj - 14 error(s), 0 warning(s) |
| Автор: Oleg_Ci 8.11.2006, 06:57 | ||
| Ну тогда я тебе не помогу... Может только подключаемые файлы изменить попробывать
|
| Автор: Mcicool 8.11.2006, 13:36 |
| А ты сам проверял? У тебя работает? Че она вообще делает ? |
| Автор: Oleg_Ci 8.11.2006, 17:06 | ||
| Ну конечно всё работает Вот урезал много чего, чтобы попроще было... Только теперь память для динамического массива выделяется не эффективно, при добавлении нового слова, программа снова выделяет память и копирует туда строки, и так при каждом добавлении слова, снова выделяет и копирует, и т.д... ну ведь прокоментировал немного, вроде должно понятно быть. Есть класс который содержит массив слов. Умеет добавлять слова из строк char*, string, и из себе подобных массивов. Умеет читать слова с консоли и из файла, и тудаже записывать. Удалять слова тоже умеет. Кстати работает только в DOS кодировке... т.е. с русскими буквами написанными в windows проблемы будут.
|
| Автор: Mcicool 9.11.2006, 16:20 |
| error C2593: 'operator <<' is ambiguous error C2593: 'operator >>' is ambiguous Все 6 ошибок одинаковые, только в разных строчках, и позоду все в функции main() . |
| Автор: Mcicool 9.11.2006, 17:53 |
| Еще вопрос такой: Зачем Вы используете виртуальный деструктор?? Что такое вообще virtual ?? |
| Автор: Oleg_Ci 9.11.2006, 19:20 | ||
| слово virtual убрать можно, оно для случая если наследование от этого класса будет, подробности в книге лучше почитать, я хорошо не объясню. Кстати только-что доделал класс для себя, можеш его взять, ещё она у меня с русскими буквами теперь работает. И уменя ошибок невыдаёт MVS2003. Прога версия№ 4 :
|
| Автор: Mcicool 9.11.2006, 21:20 |
| Что такое locale loc(".866"); ?? Вообщк что нам дает библиотека <locale> ?? |
| Автор: Oleg_Ci 10.11.2006, 09:46 | ||
|
| Автор: Mcicool 10.11.2006, 10:49 |
| Dev-C++ выдает такую ошибку: prog8.cpp:2: locale: No such file or directory |
| Автор: Oleg_Ci 10.11.2006, 14:56 | ||
Ну токда "убери локаль", подключи библиотеку <ctype.h> или <cctype>
Только теперь с русскими буквами не будет работать. |
| Автор: Mcicool 10.11.2006, 16:47 |
| Я так сделал, только теперь 5 ошибок )) 161: implicit declaration of function `int getchar(...)' 160: implicit declaration of function `int fflush(...)' 160: for each function it appears in.) 160: (Each undeclared identifier is reported only once 160: `stdin' undeclared (first use this function) In function `int main()': |
| Автор: Oleg_Ci 10.11.2006, 17:49 | ||
Эту программу попробуй на своём компиляторе.
|
| Автор: Mcicool 10.11.2006, 18:24 |
| Урааа, скомпилилась! Спасибо! Только вот что непонятно: Я ее включаю, а там на экране: ad ads gdgdgd Потом ввожу любое слово, он его копирует, и все. Что она делать вообще должна? |
| Автор: Oleg_Ci 10.11.2006, 18:44 |
| так ты вводи не одно слово а несколько сразу, скажем "asd adsd sf s d d d d". или код из функции main из других программ возьми, там где с файлами... да я вроде объяснял чего класс умеет делать, скажем из файла читать слова, складыват Word со строками, удаляет строки(кстати последнюю версию функции удаления я не проверил... извиняй если что...) |
| Автор: Mcicool 10.11.2006, 19:00 |
| Word w("ad ads"); w += w + "gdgdgd"; А что нам дают эти наборы букв. Ведь надо, чтобы пользователя сам вводил название файла. И еще, не мог бы ты прокомментировать, что делает каждый конструктор, деструктор. оператор. блин, мне даже стыдно каждый раз все новые вопросы задавать, но ничего не поделаешь (( |
| Автор: Oleg_Ci 11.11.2006, 08:46 | ||
| Ну так нормально ? здесь ещё исправил ошибки которые нашёл
|
| Автор: Mcicool 11.11.2006, 13:00 | ||
А зачем нам нужен этот участок кода? Зачем мы прибавляем какие то буквы, потом стираем? И когда, я имя файла вбиваю, программа просто выходит... Че то я вообщене пойму, как она работает... Извините конечно... Добавлено @ 13:02 аа, просто какое бы имя файла я не ввел, все равно программа выходит. |
| Автор: Mcicool 12.11.2006, 14:40 |
| У меня так : Enter filename> Пишу: text.txt //Файл находится в той же директории. И в итоге ничего не делается... странно. Кстати, а вы мне не посоветуйете нормальный компилятор, а тоя думаю, в этом тоже проблема. |
| Автор: Oleg_Ci 12.11.2006, 17:00 | ||||
Попробуй исправить
Кстати эти штуки удалить лучше, они неправильно
Кстати компилятор у меня Microsoft visual studio 2003 ( mvs2003 ). какие хорошие незнаю, да мне и ненадо, я учись ещё. |
| Автор: Mcicool 12.11.2006, 22:23 |
| Эхх, все равно такая же фигня А вы можете сделать так же, только без проверок всяких? |
| Автор: Oleg_Ci 13.11.2006, 15:23 | ||
Ну удали тогда этот код и всё.
|
| Автор: Mcicool 13.11.2006, 16:39 |
| Да все равно, теперь просто вылетает, когда я ввожу имя файла. Блин, чеж такое то (((( |
| Автор: Oleg_Ci 14.11.2006, 15:41 | ||
Попробуй так открывать:
Попробуй отдельную тему создать про открытие файлов... |