Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2013, 09:15   #1
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
Печаль задача на С++

Помогите, пожалуйста. очень срочно нужно по учёбе(
заказывала у девочки одной,а она деньги вернула,сказала,что не получается..а времени уже нет..
задание:
программа учёта семейного бюджета. исходные данные и основные требования: 1. перечень доходов всех членов семьи. 2. перечень статей расходов с указанием степени важности(обязательные расходы,желательные расходы) и требуемой суммы. 3. реализуемые функции: распределение имеющихся в распоряжении средств по статьям расходов.
Господин Никто вне форума Ответить с цитированием
Старый 24.06.2013, 09:41   #2
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию

либо,если знаете,посоветуйте,пожалуйста,прове ренного человека,который может это сделать за умеренную плату
Господин Никто вне форума Ответить с цитированием
Старый 24.06.2013, 11:02   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

ICQ 395-546-218
Могу решить, наверное (надо задачу уточнить)

Нету аськи - пишите в личку, сообщу скайп.
rrrFer вне форума Ответить с цитированием
Старый 24.06.2013, 14:04   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

3 задание (распределение имеющихся в распоряжении средств по статьям расходов.) не понял
Вложения
Тип файла: zip 1.zip (1.9 Кб, 11 просмотров)
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 24.06.2013, 15:41   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

challengerr

Мб тебе будет интересно, Valgrind нашел тут 2 утечки:
Цитата:
48 (12 direct, 36 indirect) bytes in 1 blocks are definitely lost in loss record 31 of 32
в main в main.cpp:503
1: operator new(unsigned int) в /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
2: main в <a href="file:///home/rrrfer/project/build-tmp-Desktop_Qt_5_1_0_GCC_32bit-Debug/../tmp/main.cpp:503" >main.cpp:503</a>
Цитата:
316 (12 direct, 304 indirect) bytes in 1 blocks are definitely lost in loss record 32 of 32
в main в main.cpp:459
1: operator new(unsigned int) в /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
2: main в <a href="file:///home/rrrfer/project/build-tmp-Desktop_Qt_5_1_0_GCC_32bit-Debug/../tmp/main.cpp:459" >main.cpp:459</a>
В общем утекает в этом примере почти пол килобайта )

И немного комментариев, думаю не обидишься, а наоборот.
Есть всякие правила именования классов, полей и т.п., я думаю тебе не повредит посмотреть (если не вкурсе что это), так например, имена классов/енамов/... начинают с большой буквы и пишут верблюжим регистром (тогда код читается лучше).

Мне кажется, твои классы "доход" и "расход" очень похожи (налицо копипаста), МБ общие операции типа print и поля ("размер", "описание") вынести в базовый класс типа "MoneyOperation" ?

Компилятор сам любит создавать конструкторы по умолчанию, я думаю, писать за него код не имеет смысла:
Цитата:
Код:
income(){}
//...
income(){}
Еще больше копипасты в классах cost_list_node и income_list_node (прям дохрена копипасты). отличаются эти классы, как я понимаю, только типом хранимого поля (incom или cost). Ты можешь либо использовать шаблоны:
Код:
class ListNode<class T> {
...
  T* value;
}
Либо положить туда указатель на базовый класс (MoneyOperation), про который я выше писал.

Мелочь, но Страуструп (да и прочие известные люди) нелюбят NULL, тем более в С++11 есть nullptr, который подошел бы тебе как нельзя лучше.

Код:
public:
//...
 cost_list_node* next;
 cost_list_node* prev;
Поля класса у тебя объявлены в секции public, это нехорошо, опасно.

Код:
cost_list_node(char* d, int s, enum priority_level pl) { p = NULL; next = NULL; prev= NULL; add_cost(d, s,pl); }
Есть такая штука, как список инициализации, и еще, слово "enum" тут писать не обязательно.

Код:
 void add_cost(char* d, int s, enum priority_level pl)  // добавить расход
 {
   if (p == NULL)
   {
     p = new cost(d, s,pl);
   }
   else
   {

   }
 }
Я думаю, лучше тут принимать указатель на уже готовый объект типа MoneyOperation

И вообще, зачем все это? - std::list<MoneyOperation*> мало? Я никаких особых функций, возложенных на 2 класса, размазанных на 100 строк не увидел, а если бы они и были - стоило бы наследоваться от std::list. И еще, у тебя память вот в этих списках и бежит, походу - исправляй.

Код:
class family_income // статья дохода семьи
{
public:
 family_income() {}

private:
 char* description;
 int sum;
};
этот фрагмент я вобще не понял, как ты собрался им пользоваться?

В классах family_income_node, family_cost_node, class family_cost_node // перечень статей расхода семьи наблюдается все таже копипаста (с теми же ошибками - открытые поля класса, утечка памяти) списка, который надо заменить на стандартный.

Дальше я не стал читать, устал (ну вобще ты сам понимаешь, что 10.000 символов кода {код даже на форум не выкладывается - ограничение в 5000 символов} - это как бэ ненормально для этой задачи {особенно при такой плохой реализации})
rrrFer вне форума Ответить с цитированием
Старый 24.06.2013, 15:46   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
3 задание (распределение имеющихся в распоряжении средств по статьям расходов.) не понял
Походу имеется ввиду, что нужен жадный алгоритм, который распределит имеющиеся средства семьи по статьям расходов с учетом приоритетов
rrrFer вне форума Ответить с цитированием
Старый 24.06.2013, 21:58   #7
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию

спасибо !
Господин Никто вне форума Ответить с цитированием
Старый 27.06.2013, 08:14   #8
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Новая версия
Вложения
Тип файла: zip 1.zip (34.6 Кб, 7 просмотров)
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на зачёт. проблема Задача на нобелевскую премию! Sabotage5 Паскаль, Turbo Pascal, PascalABC.NET 2 18.03.2013 15:18
Задача по подсчёту статистики использования букв. Другая задача - по длинной арифметике Pascal ABC kimberly Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 17:03
задача на структуру(struct)/задача на работу с файлом SevenArth Помощь студентам 0 26.04.2012 19:06
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel Toofed Помощь студентам 0 30.11.2011 01:12
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51