![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
TBIKC |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 30.8.2010 Репутация: нет Всего: нет |
Задача
Водителям не безразличен пробег их авто. Один водитель записал свои данные о нескольких заправках, записывая пройденные км и число залитых в бак литров бензина Разработайте программу, которая используя оператор while вводила бы пробег в км. и объём бензина в каждой заправке( пока не будет введено контрольное значение "-1" ). Программа должна показывать общий пробег и сколько потрачено бензина Я реализовал интерфейс и класс, а как задействовать в самом цикле что то не могу понять Ведь если я напишу в main.cpp так savings One(2,16); То у меня уже будут введены значения ... Помогите пожалуйста
|
||||
|
|||||
Чoо |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
если с этим классом (не переделывая его), то примерно так можно сделать (может ошибки будут, пишу навскидку, но мысль думаю будет понятна):
только пара моментов: - конструктор ни при каких условиях не должен, да и не может быть приватным - в вашем классе все методы приватны, толку от него? - там где я вызываю из своего кода методы, эти методы сделайте паблик, иначе не вызовутся ну и потом.. Класс, который бы решал задачу должен быть самодостаточным, тоесть вся прогармма должна выглядеть примерно так (модуль маин):
все остальное, по заполнению, выделению и освобождению памяти должен делать класс. ну я так думаю Добавлено @ 20:54 да... и еще такой момент.. не думаю, что вызов методов класса из его же конструктора - хорошая идея. Поправьте меня пожалуйста, так как не уверен.. Это сообщение отредактировал(а) Чoо - 22.8.2011, 20:57 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||
|
|||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не учите плохому ![]() Добавлено через 2 минуты и 39 секунд
не согласуется с
|
||||||
|
|||||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
mes, почему это плохо?
-------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
и ни капли логики внутри.. что толку то (в данном случае) от этих сетеров и гетеров ? только лишняя писанина.. Добавлено через 2 минуты и 13 секунд потому то что должна быть гибкость, а если Ваша фраза восприниамется, как "давайте запихнем все что может понадобится в наш класс".. гибкости в таком случае ноль, как впрочем становится непонятным зачем вообще нужно деление на классы.. Добавлено через 5 минут и 19 секунд
это относится к виртуальным методам из за особенностей их поведения.. Добавлено через 10 минут и 46 секунд явно не C++ .. ![]() |
||||
|
|||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
соглашусь..
Однако, применительно этой задаче, для хранения инфомрации заправка/пробег, можно было бы создать внутри класса указатель на массив этих данных и методами этого же класса выделять память под данные. Сам же указатель, для гибкости, оставить в секции public. ввод данных - да.. можно и вынести в основное приложение.. Всё остальное (впринципе что там, остается только вывести суммарные затраты бензина и суммарный пробег) оставить внутри класса. При необходимости что дополнить, создать класс/наследник, хотя дл яэтого примера это наврядли нужно.. Добавлено через 9 минут и 17 секунд ну вместо printf можно и std::in >> r >> g использовать ![]() Добавлено через 9 минут и 46 секунд вместо malloc/realloc - new Добавлено через 14 минут и 16 секунд
будут вызваны при несуществующем объекте? Это сообщение отредактировал(а) Чoо - 22.8.2011, 23:26 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
дело не в printfe, а в подходе.. Добавлено через 57 секунд можно и не в опсновное, главное что раздные задачи должны осуществляться разными сущностями.. Добавлено через 1 минуту и 36 секунд
для этого примера вообще классы не нужны.. |
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
честно говоря с данным классом ничего другого я не увидел :( -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
он (метод) в конструкторе и деструкторе будет вызван "не виртуально" |
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
единственное что, только то, что память можно было бы выделять не по 4 байта, а скажем по 400, а потом лишнюю вернуть
(realloc вроде выделяет новую память, копирует содержимое старой и удаляет старую) Это сообщение отредактировал(а) Чoо - 22.8.2011, 23:51 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
начиная от того, что зачем с объявлена как указатель на указатель, и кончая realoc`ом и фактически каждая другая строчка не свойственна С++.. |
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
в принципе да.. можно было обойтись просто указателем.. данные все-равно последовательно размещаются.. что-то я не подумал.. соответственно каждые 16 байт будет новая пара пробег/расход
-------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну так по условию, массив совсем не нужен.. записывал то водитель у себя на листочке, а не в программе ![]() Добавлено @ 00:22 т.е. нужно всего лишь что то типа :
Это сообщение отредактировал(а) mes - 23.8.2011, 08:39 |
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
вот же ж ![]() ![]() совсем я думать разучился -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
можно и с накоплением результата, например так :
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |