|
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
|
||||||
Первый class Array. Проверить и указать на ошибки, если таковые имеются19.01.2014, 21:42. Показов 2351. Ответов 24
Метки нет (Все метки)
Доброго всем времени суток!Осмелюсь показать свой первый class Array.Код работает."заточен" он на программу.Большая просьба кому не трудно покритиковать и указать на мои косяки желательно с разъяснениями.Изучаю я с++ самостоятельно и показать код просто больше не кому.За ранее всем спасибо.
Вот мой,наверное далеко не лучший код.
0
|
||||||
| 19.01.2014, 21:42 | |
|
Ответы с готовыми решениями:
24
Удалить из списка L все элементы E, если таковые имеются |
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 19.01.2014, 22:05 | |
|
Из того, что бросилось в глаза:
1. using namespace std; 2. отсутствие в объявлении класса имен аргументов (только типы) 3. магические константы (size = 28) 4. странная проверка в 58 строке, учитывая, что тип беззнаковый 5. setArray можно реализовать через operator>> 6. строка 108. закрывать вручную не обязательно 7. в IndMin/IndMax выход за границы массива и снова магические константы 8. почему оператор= возвращает const ref&? 9. почему в Sort - swap, а в InvertMass нет?
1
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 19.01.2014, 22:43 | ||
|
Советую использовать список инициализации в конструкторе. Советовал бы также посмотреть в сторону идиомы copy-and-swap В 189 строке неверно было бы завершить работу программы, уж лучше кинуть исключение std::out_of_range. PrintSize я бы назвал getSize(). Потому как get - это не всегда print. size_t определен в <cstddef> А вообще, много букаф, нету разделения на определение и реализацию и форматирование не самое лучшее. (Критиковать так критиковать )Добавлено через 1 минуту перегрузку операторов для работы с потоками можно и не делать friend-функциями, достаточно апперировать get-set методами. Добавлено через 28 секунд Конечно после вылизывания всего и вся, необходимо класс сделать шаблонным.
1
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 19.01.2014, 22:55 | |
|
Не по теме: Croessmah, привык передавать ссылку на fstream в функцию В 203 строке CopiMas. Думаю, сами поймете, что это неверно
1
|
|
|
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
|
|||
| 19.01.2014, 23:11 [ТС] | |||
|
4. странная проверка в 58 строке, учитывая, что тип беззнаковый. это не проверка ,а переприсвоение для ввода вручную без определения начального размера. 5. setArray можно реализовать через operator>> . Попробую 1. using namespace std; 2. отсутствие в объявлении класса имен аргументов (только типы) 7. в IndMin/IndMax выход за границы массива и снова магические константы.Сейчас буду проверять. 6. строка 108. закрывать вручную не обязательно. В нем могут быть пользовательские изменения которые нужно сохранить 9. почему в Sort - swap, а в InvertMass нет? Исправил. 8. почему оператор= возвращает const ref&? и 1. using namespace std; 2. отсутствие в объявлении класса имен аргументов (только типы).Если можно по подробнее.Пишут везде по разному. Добавлено через 4 минуты
0
|
|||
|
Неэпический
|
||||||||||
| 19.01.2014, 23:19 | ||||||||||
|
false может тут быть только если arraySize == 0, и тогда получится size = 0 так зачем еще условие, если можно просто size=arraySize? ибо условие смысла не имеет. Добавлено через 4 минуты
1
|
||||||||||
|
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
|
||||
| 19.01.2014, 23:21 [ТС] | ||||
|
0
|
||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||
| 19.01.2014, 23:32 | |||
|
Прочитайте и про то и про другое у Дейтелов, "как программировать на C++", там весьма подробно данный момент расписан.
1
|
|||
|
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
|
|||
| 19.01.2014, 23:53 [ТС] | |||
|
Добавлено через 6 минут шаблонный класс != разделение объявления и реализации.С этим еще предстоит разбираться.Более простое получается с трудом! Добавлено через 9 минут Всем огромное спасибо.Размышлять есть над чем.Пока постараюсь все переварить.Еще раз огромное спасибо и надеюсь на вашу помощь.
0
|
|||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 19.01.2014, 23:59 | |
|
1
|
|
|
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
|
||||||
| 22.01.2014, 01:38 [ТС] | ||||||
|
Вот что у меня получилось
0
|
||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 22.01.2014, 02:03 | |
|
Еще раз повторюсь - разделите объявление и реализацию, подтяните форматирование кода.
0
|
|
|
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
|
||||||
| 22.01.2014, 21:48 [ТС] | ||||||
|
А переписал функции и конструктор копирования правильно?
Добавлено через 19 часов 36 минут Доброго всем времени суток! Переписал.Пожалуйста посмотрите получилось ли?Какие еще косяки или неточности?
0
|
||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 22.01.2014, 21:59 | ||
|
Далее, оформите каждый исходник в отдельном теге CPP. Уберите всю реализацию в заголовочных файлах (я про ваш конструктор по-умолчанию). С форматированием вы так и не разобрались. Сделайте хотя бы чтоб логические блоки (например тело одного цикла) имели один и тот же отступ.
1
|
||
|
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
|
||||||
| 22.01.2014, 23:07 [ТС] | ||||||
|
оформите каждый исходник в отдельном теге CPP.
Извините,может это и глупо,но я не знаю как. А с форматированием...да проблема еще та.Проверять коды не кому,а пишут все по разному. Если не трудно покажите на каком нибудь примере.Буду стараться. Если все остальное верно,если не возражаете,покажу что получится в следующий раз. Добавлено через 50 минут Так правильно?
0
|
||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||||||||||||
| 23.01.2014, 01:58 | ||||||||||||||||
|
Что исправлено:
- улучшено форматирование кода - исходник разделен по файлам, реализация вынесена от объявления - исправлены некоторые неверные комментарии - исправлены ошибки в копировании в конструкторе копий и операторе присваиваний - убраны ненужные ссылки в параметрах методов - добавлен квалификатор const к некоторым параметрам функций - некоторые методы стали константными (добавлен const в конце) - добавлен конструктор по умолчанию - инициализация в конструкторе использует список инициализации конструктора - добавлен недостающий заголовочный файл, ввод вывод объединен в iostream - изменен порядок следования методов в заголовочном файле (поделено по категориям) - изменен порядок следования в файле реализаций (соответствует порядку следования в заголовочном файле - добавлен using namespace std; использовать - так использовать. Лишние std:: убраны - Copi поменял на Copy - смотреть невозможно - переписан оператор += (избавление от утечки памяти) Вообщем то тут много чего еще меня не устраивает - например я методы всегда с маленькой буквы называю, избегаю транслит(Mass), считаю, что setArray должен принимать указатель на массив, а не требовать ввод с клавиатуры, функция сортировки должна называться просто sort(), мы же итак с массивом работаем, и прочее и прочее... Смысл работы функции CopyMass я так и не понял, поэтому тело оставил как есть. Почти все делал на автомате, все-таки целый день работал, а время уже немалое. Наверняка что-нибудь оставил концептуально неверное. Основная задача ставилась показать пример правильного (на мой взгляд, разумеется) форматирования кода. А уж вышло что вышло. Проект для CB 10.05 (в котором работает ТС) прикрепляю. Array.h
1
|
||||||||||||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
| 23.01.2014, 02:17 | ||||||
|
Еще надо добавить
Сам не проверил, а у вас его не было.
1
|
||||||
| 23.01.2014, 02:17 | |
|
Помогаю со студенческими работами здесь
20
найти точки пересечения (если таковые имеются) параболы(парабола любая) Составить программу, которая удаляет из списка L все элементы E, если таковые имеются.
Массив: Заменить нулем все элементы этой матрицы, равные x, если таковые имеются. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|