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

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

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

Показать сообщение отдельно
vxg
Модератор
 Аватар для vxg
2726 / 1737 / 173
Регистрация: 13.01.2012
Сообщений: 6,504
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 == ...) ...
}
ну и тогда сделать функцию освобождения памяти перед выходом
 
Текущее время: 15:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru