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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.98
Demelurg
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 28
#1

Сказали некрасиво пишу - C++

12.10.2013, 11:08. Просмотров 6036. Ответов 160
Метки нет (Все метки)

изучаю с++ почти 2 месяц , пишу програму она работает но препод говорит что иногда не красиво пишу ((( пишу так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class Time
{
private:
    int hour;
    int minute;
    int second;
    int tmp_sec;
    int tmp_min;
public:
    Time():hour(0),minute(0),second(0) 
    {}
    Time(int h , int m , int s):hour(h),minute(m),second(s)
    {}
    void Out_put()const
    {
        cout<<setw(3)<<" Time = "<<setw(3)<<hour<<" : "
            <<setw(3)<<minute<<" : "<<second<<endl;
    }
 
    Time sum_Time(Time);
};
 
Time Time::sum_Time(Time other_time)
   {
       Time tmp;
       tmp_sec = 60;
       tmp_min = 60;
 
       tmp.hour = hour + other_time.hour ;
 
       tmp.second = second + other_time.second ;
       tmp.minute = minute + other_time.minute ;
        
           if ( tmp.second >= 60 )
               {
                   tmp_sec *= tmp.second / 60 ;
                   tmp.minute += tmp_sec / 60 ;
                   tmp.second -= tmp_sec ;
               }
 
               if ( tmp.minute >= 60 )
                   {
                       tmp_min *= tmp.minute / 60 ;
                       tmp.hour += tmp_min / 60 ;
                       tmp.minute -= tmp_min ;
                   }
      return tmp;
   }
   
int main()
{
    Time first_Time(22,155,177);
    Time second_Time(12,39,89);
 
    first_Time.Out_put();
    second_Time.Out_put();
 
    cout<<endl<<endl<<" You Three = ";
    Time three_Time = first_Time.sum_Time(second_Time);
    three_Time.Out_put();
 
    cout<<endl<<endl;
 
    return 0;
}
не красиво потомучто не подписую что делает та или иная функция в коментариях ???
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2013, 11:08     Сказали некрасиво пишу
Посмотрите здесь:

Сказали сделать такое - C++
Ребят, если что - простите, может не туда тему написал, скажите куда писать. Вообщем мне нужна абсолютно безразницы чем создана программа,...

пишу ed, отмена изменений - C++
Черт меня дернул взять это своим проектом. В общем пишу через глобальные переменные типа сам буфер, текущими позиции, ссылки на начала...

Пишу велосипед (shared_ptr) - C++
При компилировании получаем целую кучу ошибок. Не могу понять где я ошибся( #include&lt;iostream&gt; #include&lt;vector&gt; #include&lt;utility&gt; ...

Пишу консольное приложение - C++
Здравствуйте. Решил написать программу, идея программы заключается в том чтобы на базе консольного приложения написать программу(функции...

Пишу транслятор и интерпритатор - C++
Всем привет! Я пишу транслятор и интерпретатор. Те люди кто тоже этим занимаются, или тем кому не лень, ПОЖАЛУЙСТА!!! Мне необходимо найти...

Ядрышко ОСи пишу - C++
хм.Изучаю си два месяца.Хочу написать ОС.Простую, командную строку.И хочу писать ядро.Сложно ли это?Допустим епросто хелловорлд и cin.Как...

Пишу итератор произвольного доступа - C++
Пишу итератор произвольного доступа. По минимуму он должен поддерживать несколько операций, но меня смутила операция n+it, где n это целое...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Matan!
269 / 120 / 23
Регистрация: 31.05.2013
Сообщений: 1,026
Записей в блоге: 2
Завершенные тесты: 1
12.10.2013, 15:50     Сказали некрасиво пишу #16
Нормально всё читается.
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
Я бы советовал делать объявление переменных одного типа в одной строке. Пример: int a, b, c, d;
Это спорно.Нам говорили,что хорошим стилем является объявление каждой переменной в отдельной строке.Кто как хочет,так и объявляет.Лишь бы винегрета не было в коде.
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,438
Записей в блоге: 17
12.10.2013, 16:04     Сказали некрасиво пишу #17
C++
1
sum_Time()
Може лучше
C++
1
sumTime()
или
C++
1
sum_time()
Что-то одно как разделитель слов.

Непонятно назначение :
C++
1
2
int tmp_sec;
int tmp_min;
Если они временные почему не объявлять их локально, если константы то почему их не объявлять как константы ?
Demelurg
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 28
12.10.2013, 17:06  [ТС]     Сказали некрасиво пишу #18
1.да можно и не вносить их в клас ( tmp_sec, tmp_min ) но начал так писать и чтоб не поплутать оставил.
2. в Лафоре на тот момент не говорили как делать файл ".h" да и для маленькой проги не хотел создавать.
3.согласен но недавно начал учить класы да и метод который выводит походу const ?

C++
1
2
3
4
5
void Out_put()const
    {
        cout << setw(3) << " Time = " << setw(3) << hour << " : "
             << setw(3) << minute <<" : " << second << endl;
    }
4. тоесть вы говорите что сначала надо public: f gjnjv private: ???
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
12.10.2013, 17:17     Сказали некрасиво пишу #19
Demelurg, норм, только не понравилось наименование методов. В константном - большая буква, в обычном - маленькие. Лично я открытые методы именую аля SumTime И перед private-полями ставлю нижнее подчеркивание - удобно потом в конструктор параметры передавать Дело привычки)
Demelurg
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 28
12.10.2013, 17:28  [ТС]     Сказали некрасиво пишу #20
в класе хотел обявить выдает ошыбку а глобально не хотел обявлять их ( int tmp_sec; int tmp_min )но да можно и локально.
kventin_zhuk а про
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
перед private-полями ставлю нижнее подчеркивание
не понял как ?
ты емеешь ввиду типа не так

C++
1
2
3
4
5
6
private:
    int hour;
    int minute;
    int second;
    int tmp_sec;
    int tmp_min;
а так ?

C++
1
2
3
4
5
6
private:
    int _hour;
    int _minute;
    int _second;
    int _tmp_sec;
    int _tmp_min;
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
12.10.2013, 17:33     Сказали некрасиво пишу #21
Demelurg, именно. и тогда конструктор может выглядеть уже так:
C++
1
2
3
4
Time(int hour, int minute, int second)
{
     // тело конструктора
}
а то при вызове из кода конструктора параметры h m s - не очень информативно

и еще я не ставлю пробел перед запятой в параметрах функций/методов
ct0r
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 1
12.10.2013, 17:36     Сказали некрасиво пишу #22
Придираться конечно можно. Но в целом мне кажется норм.
К чему я бы придрался, если б имел например жуткое желание завалить:
про tmp_min, tmp_sec уже сказали
про именование private уже сказали (я бы только ставил _ в конце, а не в начале)
нет проверки на допустимость передаваемых в конструктор данных (иначе зачем знаковый тип?)
про смесь стилей в sum_Time уже сказали (в том числе это может быть константная функция-член, принимающая константную ссылку)
фигурные скобки я бы не сдвигал, так как такой стиль конечно есть и имеет право на существование, но очень мало кем используется.

private в данном случае я бы не стал переносить в конец. Публичный интерфейс это конечно хорошо, но иногда один взгляд на самые важные private-члены позволяет сразу очень многое узнать о классе.

Цитата Сообщение от kventin_zhuk Посмотреть сообщение
перед private-полями ставлю нижнее подчеркивание - удобно потом в конструктор параметры передавать
Чем удобно? По-моему вообще без разницы.
C++
1
Time(int hour, int minute, int second): hour(hour), minute(minute), second(second)
В стандарте такая запись вполне определена и всегда работает.
Demelurg
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 28
12.10.2013, 17:38  [ТС]     Сказали некрасиво пишу #23
про пробел ето уже кому как удобней , а на счет информативности и на счет подчеркивание - реально кульный совет спасиб.
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
12.10.2013, 17:39     Сказали некрасиво пишу #24
Часто пишут, что, например, нужно писать в классе сначала public часть, а потом private.
Много таких вещей можно узнать из книги "Совершенный код" Макконнелла
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 17:40     Сказали некрасиво пишу #25
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
перед private-полями ставлю нижнее подчеркивание - удобно потом в конструктор параметры передавать
Это не смущает?
Миниатюры
Сказали некрасиво пишу  
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
12.10.2013, 17:41     Сказали некрасиво пишу #26
Цитата Сообщение от dimakozyr Посмотреть сообщение
Часто пишут, что, например, нужно писать в классе сначала public часть, а потом private.
Бессмысленно. Тогда уж заместо class писать struct и не писать вначале public:
Demelurg
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 28
12.10.2013, 17:41  [ТС]     Сказали некрасиво пишу #27
Цитата Сообщение от ct0r Посмотреть сообщение
нет проверки на допустимость передаваемых в конструктор данных (иначе зачем знаковый тип?)
извините не понял ? проверка какие дание ввожу ?
Цитата Сообщение от ct0r Посмотреть сообщение
фигурные скобки я бы не сдвигал, так как такой стиль конечно есть и имеет право на существование, но очень мало кем используется.
скобки которые после конструктора ?
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
12.10.2013, 17:42     Сказали некрасиво пишу #28
Цитата Сообщение от castaway Посмотреть сообщение
Бессмысленно. Тогда уж заместо class писать struct и не писать вначале public:
Ну да, я так и делаю Но если класс, то это делается, чтобы сначала было видно по public методам, для чего класс нужен
Убежденный
Системный программист
Эксперт С++
15296 / 6928 / 1096
Регистрация: 02.05.2013
Сообщений: 11,336
Завершенные тесты: 1
12.10.2013, 17:43     Сказали некрасиво пишу #29
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
И перед private-полями ставлю нижнее подчеркивание - удобно потом в конструктор параметры передавать
В C++ имена, начинающиеся с подчеркивания, зарезервированы.

C++03, 17.4.3.1.2 Global names
Certain sets of names and function signatures are always reserved to the implementation:

- Each name that contains a double underscore (_ _) or begins with an underscore followed by an upper-case letter (2.11) is reserved to the implementation for any use.

- Each name that begins with an underscore is reserved to the implementation for use as a name in the
global namespace.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2013, 17:43     Сказали некрасиво пишу
Еще ссылки по теме:

Вопрос новичка - пишу калькулятор - C++
Всем привет! Изучаю с++ пока второй день (вернее третий час)), наверно как и многие, пишу калькулятор. Однако написав простые действия,...

Пишу ОС, нужен доступ к экрану - C++
Здравствуйте! Пишу свою ОС, основная работа на ассемблере есть, теперь осталось написать на Си. Проблема такая, есть адрес видеопамяти...

Пишу конвертер: число в строку - C++
Пишу простенький конвертер, переводящий числа в слова. Проектирование на начальном этапе находится, поэтому функции постепенно дорабатываю....

Пишу примитивный никому не нужный контейнер - C++
захотелось для практики написать аналог array из STL :) ну не полностью аналог, так, по своему как мне он был бы удобен... безо всяких...

Пишу умножить, а воспринимается как указатель - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; void main() { int i,j; int b; for(i=1;i&lt;5;i++) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Demelurg
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 28
12.10.2013, 17:43  [ТС]     Сказали некрасиво пишу #30
Цитата Сообщение от alsav22 Посмотреть сообщение
Это не смущает?
а вот етого я не знал н тоесть знал что есть зарезирвирование имена но про подчеркивание не знал.
Yandex
Объявления
12.10.2013, 17:43     Сказали некрасиво пишу
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru