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

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

Войти
Регистрация
Восстановить пароль
 
11101010
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 35
#1

Откомментируйте календарь - C++

27.04.2013, 19:40. Просмотров 506. Ответов 5
Метки нет (Все метки)

Объясните пожалуйста, почему в 18й строке вычитаем 2008? Ещё пожалуйста откомментируйте строки снизу, что календарь отрисовывают (где формулы), мол, почему эти числа и что там и как происходит. Нужно как-то подсветить праздники и выходные, как это можно сделать?
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
#include <iostream>
using namespace std;
 
int DaysPerMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int DayForw[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
char cMonths[] = "Jan\0Feb\0Mar\0Apr\0May\0Jun\0Jul\0Aug\0Sep\0Oct\0Nov\0Dec";
int DaysPerYear = 365;
 
int main()
{
    cout << "Enter the month & the year for calendar (mm yyyy): ";
    int iMonth, iYear;
    int* Direction;
    cin >> iMonth >> iYear;
    cout << endl;
    int iCorrect, DaysDist;
 
    DaysDist = (iYear - 2008);
    Direction = &DayForw[0];
 
    iCorrect = (DaysDist)/4; // запоминаем количество високосных лет, для коррекции дней недели...
    if (DaysDist>0)
        iCorrect++;
    if ((DaysDist)%4 == 0) // если високосный год, то корректируем вспом. массивы...
    {
        if (DaysDist>0)
            iCorrect--;
        for (int i=2; i < 12; i++) // массив для коррекции по месяцу...
            DayForw[i]++;
        DaysPerMonth[1]++; // массив количеств дней в месяце...
    }
 
    DaysDist = DaysDist*365+iCorrect+Direction[iMonth-1];
    int DayOfMonth;
    if (DaysDist < 0)
        DayOfMonth= 7 - (5-DaysDist)%7;
    else
        DayOfMonth = (DaysDist+1)%7 + 1;
    cout << "\t    ************ " << cMonths+(iMonth-1)*4 << " " << iYear << " ************" << endl << endl;
    cout << "\tMon\tTue\tWed\tThu\tFri\tSat\tSun" << endl << endl;
    for (int i=1; i<DayOfMonth; i++)
        cout << "\t";
    for (int i=0; i<DaysPerMonth[iMonth-1]; DayOfMonth++, i++)
    {
        cout << "\t" << i+1;
        if (DayOfMonth==7)
        {
            DayOfMonth=0;
            cout << endl << endl; 
        }
    }
    cout << endl << endl << "\t    ************ " << cMonths+(iMonth-1)*4 << " " << iYear << " ************" << endl;
    cin >> iYear;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 19:40     Откомментируйте календарь
Посмотрите здесь:

Откомментируйте задачи - C++
Огромная просьба откомментировать код,желательно каждый цикл,заранее спасибо!! 1) // Oleynik_tipovik1.cpp: определяет точку входа...

Восточный календарь - C++
Нужна помощь,ну или кто может написать код программы,про Восточный календарь! Сам текст: В восточном календаре принят 60 летний...

Юлианский календарь - C++
Здаров. Посмотрите пожалуйста задачу И попробуйте решить по разбору. вот что получилось у меня: #include &lt;iostream&gt; using...

Универсальный календарь - C++
Требуется программа &quot;универсальный календарь&quot; для расчета дня недели для заданной даты, отображения календаря на неделю, месяц и...

японский календарь - C++
В японском календаре был принят 60-ти летний цикл, состоящий из пяти 12-ти летних подциклов. Внутри подцикла года носили названия...

Старояпонский календарь - C++
Помогите написать программу: В старояпонском календаре был принят 60-летний цикл, состоявший из пяти 12-летних подциклов. Подциклы...

Календарь занятий - C++
Володе очень понравились задачи олимпиады по информатике, поэтому он решил ходить на занятия кружка по программированию. Придя на первое...

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

Вечный календарь - C++
Написал программу &quot;Вечный календарь&quot;, которая определяет день недели введенной даты и подсчитует количество дней от введеной даты до...

Программа на календарь. - C++
Здравствуйте. Помогите пожалуйста написать программу на языке Си, не С++. Звучит она так: Даны три натуральных числа a,b,c обозначающие...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ssXXss
264 / 186 / 10
Регистрация: 15.01.2011
Сообщений: 668
27.04.2013, 20:05     Откомментируйте календарь #2
Цитата Сообщение от 11101010 Посмотреть сообщение
почему в 18й строке вычитаем 2008?
)) может проще спросить у того кто этот код писал?, предположу что 2008 год был високосным ,хотя xz

Добавлено через 2 минуты
используй отладчик, запусти программу в пошаговом режиме , смотри как меняются значения переменных и все станет ясно .
11101010
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 35
28.04.2013, 01:04  [ТС]     Откомментируйте календарь #3
Если 2008 был високосным, то и 2004й тоже был, и если вычитать 2004, то дни недели сбиваются, правильно лишь при 2008. До автора врядли доберусь, посему может тут догадается кто-то. При том, ещё как-то праздники надо выделить, есть идеи?
MrGluck
Модератор
Эксперт CЭксперт С++
7001 / 4172 / 595
Регистрация: 29.11.2010
Сообщений: 11,075
28.04.2013, 01:09     Откомментируйте календарь #4
Цитата Сообщение от 11101010 Посмотреть сообщение
Объясните пожалуйста, почему в 18й строке вычитаем 2008?
потому что велосипед этот с костыльком.

Вы уверены, что вам в консоли нужно извращаться с рисованием, подсветкой?
Ну тогда ASCII драйвер вам в помощь на лине и древней винде и завихрени с conio.h/windows.h на окнах.

Добавлено через 26 секунд
Код лучше всего стереть и написать все с начала.
11101010
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 35
28.04.2013, 15:46  [ТС]     Откомментируйте календарь #5
а что с этим кодом-то не так?
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
28.04.2013, 15:55     Откомментируйте календарь #6
Листинг в первом посте хороший пример того, как нельзя комментировать код.
Писать комментарии тоже надо уметь, в этом коде мы видим, что несмотря на наличие комментов, код не стал более понятным.

А по поводу просьбы помочь разобраться, вот хороший совет:
Цитата Сообщение от MrGluck Посмотреть сообщение
Код лучше всего стереть и написать все с начала.
Yandex
Объявления
28.04.2013, 15:55     Откомментируйте календарь
Ответ Создать тему
Опции темы

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