Форум программистов, компьютерный форум CyberForum.ru

Нужно оптимизировать готовый код, чтобы не было стыдно показать - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция scanf() http://www.cyberforum.ru/cpp-beginners/thread654234.html
//--------------------------------------------------------------------------- #include <vcl.h> #include <stdio.h> #include <conio.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused
C++ Определить, предшествует ли одна дата другой Переменной t присвоить значение true , если дата m,d,y предшествует дате m1,d1,y1, иначе t=false. (m -месяц d-день y-год ). Думал что нужно вводить две даты, а получается что нужно ввести дату m,d,y и отнять 1 день и вывести получившиюся дату. Помогите кто может. P.S. использовать массивы нельзя. И нужно получается делать проверку на кол-во дней в месяце, високосный ли год и т.п. P.S.S.... http://www.cyberforum.ru/cpp-beginners/thread654227.html
Посоветуйте книги по С++ для начинающих C++
Посоветуйте книги по С++ для начинающих.
"Обработка файлов и строк" C++
Используя средства визуального проектирования (компонент Memo), организовать работу с файлами: 1. Подсчитать количество сдвоенных символов “hh”,”ff” и”gg” в тек¬сте размещенном в текстовом файле. Результат поместить во второй файл, например, в виде: “hh” - 3; “ff” -5; “gg” -1.
C++ Определение класса, описывающего комплексное число. Перегрузка для него бинарного оператора "*" http://www.cyberforum.ru/cpp-beginners/thread654206.html
1. Определить класс, описывающий комплексное число. Для класса перегрузить бинарный оператор *. Написать программу, в которой используется перегруженный оператор.
C++ Определить класс, описывающий сектор 1. Определить класс, описывающий сектор. Написать программу, в которой используются методы определенного класса. подробнее

Показать сообщение отдельно
vxg
Модератор
3122 / 1924 / 209
Регистрация: 13.01.2012
Сообщений: 7,377
19.09.2012, 07:39     Нужно оптимизировать готовый код, чтобы не было стыдно показать
- почему класс называется "список" если это фактически одна единственная запись?
- необычно, что цена константное статическое поле. я понимаю, что цена в пределах месяца постоянная, но может в другом месяце она будет другая?
- в конструкторе использовать списки инициализации
C++
1
2
3
4
ShoppingList::ShoppingList(int day, int discPer, int discPr, int bonusAll, int cnt):
    dayOfMonth(day),
    ...
{}
- почему у функции проверки даты значение по умолчанию именно 10 ?
- в функции вычисления цены можно убрать скобки - приоритеты не дадут выражению вычисляться иначе
- в функции оперирующие с массивом нужно передавать его размер - указание волшебного числа 15 внутри - это плохо
- блок ожидания в конце программы можно заменить на system("pause") - во всяком случае если вы работаете под Windows и нажатие клавиши для выхода из программы не считается вводом... функция exitTime в любом случае тяжелая. там должно было быть Sleep, но я подозреваю, что она была сделана так как сделана, что бы быть переносимой на другие платформы. цикл в этой функции будет грузить систему.
- для хранения списка можно использовать не только массив. например, std::list.
- для сортировки списка можно использовать библиотечную функцию qsort. или, если список хранить в std::list определить свою функцию sort
- сделать имена единообразными - они то с большой буквы начинаются, то с малой. некоторые имена набраны большими - обычно это делают для макроопределений.
- осмыслить для себя, что означает имя каждой функции. например, sortingShList - я так понимаю сортированный список, то есть имя формируется по наименованию результата. однако в то же время имеем функцию ShowDays - имя сформировано по производимому действию.
- зачем ShowDays вызывается два раза?
- если используется std::endl, то как правило не используется \n
=
а так вообще нормально.

Добавлено через 10 минут
...больше ООП будет только наверное если вместо массива сунуть std::list и переопределить для него sort.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//res = true - x должен быть расположен перед y
static bool cmp
(
    const ShoppingList * const x, const ShoppingList * const y
)
{
    return x->dayOfMonth < y->dayOfMonth;
}
 
std::list<ShoppingList *> objs;
objs.push_back(new ShoppingList(...));
objs.sort(cmp);
 
//для прохода по списку
for
(
    std::list<ShoppingList *>::iterator i = objs->begin();
    i != objs->end();
    i++
)
{
    if ((*i)->dayOfMonth == ...) ...
}
ну и тогда сделать функцию освобождения памяти перед выходом
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru