|
|
|||||||||||||||||
Посмотреть код01.08.2012, 20:14. Показов 3620. Ответов 20
Метки нет (Все метки)
Приветствую всех
![]() Вот решил написать программу сам, чтобы так скажем закрепить все полученные на сегодняшний день знания по С++ (еще не полностью дочитал книгу Липпмана) Вот как раз в этой книге надо было сделать проект. Задача программы в следующем.
С классами я еще знаком слабо(через 1 главу только начнется их изучение) , только то что рассказывалось в общем. Прошу у кого есть время и желание посмотрите код и скажите может есть что-то, что реализовано "ужасно", только не надо показывать как это можно реализовать более сложными способами, то что я использовал это, то что я прошел по книге. Заранее благодарен за указание на все мои косяки PS: Первый раз писал программу содержащую больше 100 строк ![]() файл main.cpp
файл TextQuery.h
файл TextQuery.cpp
0
|
|||||||||||||||||
| 01.08.2012, 20:14 | |
|
Ответы с готовыми решениями:
20
Посмотреть код встроенных математических функций. Открыть cmath Односвязный список (псевдокод) - поменять два элемента местами (посмотреть, правильно ли написан код) можеш посмотреть |
|
60 / 60 / 8
Регистрация: 15.10.2010
Сообщений: 356
|
|||||||||||
| 01.08.2012, 20:36 | |||||||||||
|
Очень неплохой код.
Единственное что, лучше прописать
И кусок
Так держать!
1
|
|||||||||||
|
|
|||||||
| 01.08.2012, 20:41 [ТС] | |||||||
![]()
0
|
|||||||
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
||||||||
| 02.08.2012, 01:47 | ||||||||
|
1. я бы рекомендовал заменить not_punct на следующую строчку:
2. придирка, но функциям типа manu, print_result и тд не место в заголовочном файле, вы же класс пишете 3. // Ввод слова для поиска и вывод результата void found_and_result как я по названию функции должен понять, что ожидается ввод?? кроме того: ИМХО [практически] любой ввод/вывод в функциях/методах это безвкусица и не надо так делать. к примеру в open_file можно возвратить код ошибки или типа того...
. пс: рекурсия там тоже лишняя. да и вообще зачем делать открытие файла - методом........ во 2-х я так понимаю по т.н. iter можно изменить содержимое map-а? ну и в 3-х не понравилось, что получаете из класса аж целый вектор строк. только для того чтобы использовать его как текст, тоесть ваш класс можно также использовать как удалитель знаков препинания... странно... а вот, то что использовал set это хорошо.
1
|
||||||||
|
|
|||||||||
| 02.08.2012, 02:22 [ТС] | |||||||||
|
на взаимодействии с пользователем это же не сказывается по поводу заполнения стека, я не думаю что пользователь будет очень много раз ошибаться в выборе файла если ошибаюсь поправьте ![]() В любом случае, щас пойму какие ошибки допускаю через месяц будет проще в универе
0
|
|||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||||||||||||||||||||||
| 02.08.2012, 02:44 | ||||||||||||||||||||||||||
|
Как по мне так дикий оверхед, но ладно, это учитывать не будем - замечания.
1) Название методов должно быть говорящим, если я вижу
2)
3)
3.1)
3.2) Файл пытается открыться два раза (т.е. если условие ложно - файл уже открыт, а вы потом еще раз его открываете). 3.3) Рекурсия здесь абсолютно не к месту. Если юзер подал неверный файл - выкидываем эксепшн, т.к. это ошибка, а в программе, которая это использует уже делаем какую-нибудь обработку этого исключения. 4) not_punсt как уже сказали лучше использовать std::remove_if. 5) Вывод в методах на консоль, использование очистки консоли и т.д. - плохо. 6) Вообще не юзаются const-ссылки, не юзаются const-функции класса. Вот как-то так, при беглом просмотре кода. А так молодец. Вперед.
1
|
||||||||||||||||||||||||||
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
||||||||||||
| 02.08.2012, 02:58 | ||||||||||||
|
да и выглядит лаконичней. и тут аж 2 функции. я так понимаю раз не сталкивался, то стоит расписать, чтоб вопросов сразу же не возникло. типа remove_if в соответствии с предикатом (в нашем случае ispunct) , перемешивает контейнер, так что несоответствующие элементы оказываются в конце, и возвращает итератор на то место где они начинаются. от туда и до конца мы и рубим через ерейз. ну и вообще 1 файл - 1 сущность. (за исключением сборников сущностей типа windows.h) да и вообще не устану повторять ввод внутри функций - плохо плохо плохо плохо.... ну а вывод... тоже нафиг не сдался внутри. ну про "чушню". вот будет использовать какой нить чел твою библиотеку, к примеру Торвальдс, ну запустит че-то. и его реакция будет на ети ""Excellent! The file \'"<< ss << "\' is opened!" " будет типа http://img.by/i/kgFxs.jpg про возврат значения ошибки: к примеру как сделано в винде... во многих функциях... помещаем ввесь код в неймспейс. и делаешь допустим (имя Неймспейса --> TextQuery) enum { ERR_SUCCESS, ERR_FILE_NOT_EXIST, WRONG_KEY, FILE_EMPTY .... } и делаешь
и ВООБЩЕ открывать то файл лучше своими руками, а потом уже ОТКРЫТЫЙ передавать в функцию.. тут: это удобно? - не знаю. эффективно и логично? - нет.
1
|
||||||||||||
|
|
|||
| 02.08.2012, 03:01 [ТС] | |||
|
а так завтра возможно возникнут какие-нибудь вопросы. кстати как узнать поддерживается ли с++11? Классы изучу получше станет, думаю, просто все задачи в основном идут на 1 пройденную тему. На 1 тему задачи проще решать и проблем почти не возникает, это плохо, как по мне, вроде по отдельности все применить можешь, а когда все сразу уже сложнее Хорошо хоть форум такой нашел, где если что помогут
0
|
|||
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|||||||||||||
| 02.08.2012, 03:31 | |||||||||||||
|
Добавлено через 17 минут
0
|
|||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 02.08.2012, 04:14 | |
|
alex_x_x, Не настаиваю, но http://www.stroustrup.com/bs_faq2.html#null предпочитаю прислушиваться.
А проверка файла конечно странный способ, но раз есть operator void*() то вцелом корректный. Кстати http://cplusplus.com/reference... or_voidpt/ вот откуда берутся плохие примеры.
1
|
|
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||
| 02.08.2012, 09:04 | ||||
0
|
||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 02.08.2012, 15:16 | |
|
DaskOFF, Стадарт языка.) Хотя там тоже попадается иногда не очень.
1
|
|
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|||
| 02.08.2012, 15:27 | |||
|
пока тип не посмотришь (с не самым очевидным сокращением) непонятно что это (скаляр, объект, итп)
1
|
|||
|
|
|||||||
| 02.08.2012, 22:28 [ТС] | |||||||
![]() Добавлено через 6 часов 4 минуты подскажите, как сделать, чтобы он спрашивал снова при вводе букв или это невозможно ?
при вводе букв он зацикливается и все ![]() скажите хотя бы можно так вообще сделать или нет?
0
|
|||||||
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
| 02.08.2012, 23:45 | ||||||
1
|
||||||
|
|
||||||||||||||||
| 05.08.2012, 15:40 [ТС] | ||||||||||||||||
|
вот, что-то исправил, что-то переписал. Прошу взглянуть еще раз.
main.cpp
0
|
||||||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
| 05.08.2012, 15:48 | |||||||||||
1
|
|||||||||||
| 05.08.2012, 15:48 | |
|
Помогаю со студенческими работами здесь
20
Посмотреть содержимое папки Как посмотреть элементы динамического массива при дебаге? Подскажите, где посмотреть информацию Где посмотреть простейший парсер на C++?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|