Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Fargete
0 / 0 / 8
Регистрация: 15.11.2016
Сообщений: 42
#1

Вывести календарь на год - C++

25.05.2017, 20:40. Просмотров 428. Ответов 1
Метки нет (Все метки)

Как сделать так, чтобы печатался календарь 3х4. Он у меня печатает 1х12. Ещё нужно установить расстояние между элементами не через \t, а через setw(). Но сколько я не работал, у меня всё криво отображается. Помогите, пожалуйста
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
66
67
68
69
70
71
72
73
74
#include "stdafx.h"
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int countMonth(int startDay, int daysNumber, char* name) 
{
    cout << "                     " << name << endl << "__________________________________________________" << endl;
    cout << "Пн\tВт\tСр\tЧт\tПт\tСб\tВс" << endl;
    for (int i = 1; i < startDay; i++)
        cout <<"\t";
    for (int i = 1; i <= daysNumber; i++)
    {
        cout << i << "\t";
        if ((startDay + i) % 7 == 1)
            cout << endl;
    }
    cout << endl;
    cout << endl;
    startDay = (startDay + daysNumber) % 7;
    if (startDay == 0)
        startDay = 7;
    return startDay;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int a, Feb;
    cout << "Введите год: ";
    cin >> a;
    if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0)
        Feb = 29;
    else
        Feb = 28;
 
    int  leapyears, years, days, b;
    if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0)
    {
        years = a - 1900;
        leapyears = (years - 1) / 4;
        days = years * 366 + leapyears;
        b = days % 7;
    }
    else 
    {
        years = a - 1900;
        leapyears = (years - 1) / 4;
        days = years * 365 + leapyears;
        b = days % 7;
    }
 
    cout << endl;
 
    b = countMonth(b, 31, "Январь");
    b = countMonth(b, Feb, "Февраль");
    b = countMonth(b, 31, "Март");
    b = countMonth(b, 30, "Апрель");
    b = countMonth(b, 31, "Май");
    b = countMonth(b, 30, "Июнь");
    b = countMonth(b, 31, "Июль");
    b = countMonth(b, 31, "Август");
    b = countMonth(b, 30, "Сентябрь");
    b = countMonth(b, 31, "Октябрь");
    b = countMonth(b, 30, "Ноябрь");
    b = countMonth(b, 31, "Декабрь");
 
 
    system("pause");
 
    return 0;
}
Добавлено через 1 час 15 минут
Тема всё ещё актуальна
Подскажите хотя бы, как сделать вывод 3х4
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2017, 20:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывести календарь на год (C++):

Вывести календарь на заданный год
Ребят, помогите, пожалуйста, написать календарь на год c++ Год определяется...

Календарь на год
Доброго времени суток, никак не получается решить задачу. Написать программу...

Написал календарь на 2015 год, но не получается сопоставить числа и дни
Здравствуйте! Писал календарь на 2015 год, по видео делал всё. Всё понятно до...

Восточный календарь: вывести название года
Давным давно, в одной альтернативной вселенной, в восточном календаре был...

Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года)
Вводится день, месяц и год, вывести:1)календарь на указанный месяц этого года....

Вывести на экран сведений о книгах: автор, название, год издания
Программирование задач обработки структур и файлов Даны сведения о книгах:...

1
MrGluck
Модератор
Эксперт CЭксперт С++
8023 / 4866 / 1425
Регистрация: 29.11.2010
Сообщений: 13,251
25.05.2017, 21:46 #2
Вам нужно явно указать приоритет операций в условии if
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
66
67
68
69
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int countMonth(int startDay, int daysNumber, const char* name)
{
    cout << "                     " << name << endl << "__________________________________________________" << endl;
    cout << "Пн\tВт\tСр\tЧт\tПт\tСб\tВс" << endl;
    for (int i = 1; i < startDay; i++)
        cout <<"\t";
    for (int i = 1; i <= daysNumber; i++)
    {
        cout << i << "\t";
        if ((startDay + i) % 7 == 1)
            cout << endl;
    }
    cout << endl;
    cout << endl;
    startDay = (startDay + daysNumber) % 7;
    if (startDay == 0)
        startDay = 7;
    return startDay;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int a, Feb;
    cout << "Введите год: ";
    cin >> a;
    if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0)
        Feb = 29;
    else
        Feb = 28;
 
    int  leapyears, years, days, b;
    if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0)
    {
        years = a - 1900;
        leapyears = (years - 1) / 4;
        days = years * 366 + leapyears;
        b = days % 7;
    }
    else
    {
        years = a - 1900;
        leapyears = (years - 1) / 4;
        days = years * 365 + leapyears;
        b = days % 7;
    }
 
    cout << endl;
 
    b = countMonth(b, 31, "Январь");
    b = countMonth(b, Feb, "Февраль");
    b = countMonth(b, 31, "Март");
    b = countMonth(b, 30, "Апрель");
    b = countMonth(b, 31, "Май");
    b = countMonth(b, 30, "Июнь");
    b = countMonth(b, 31, "Июль");
    b = countMonth(b, 31, "Август");
    b = countMonth(b, 30, "Сентябрь");
    b = countMonth(b, 31, "Октябрь");
    b = countMonth(b, 30, "Ноябрь");
    b = countMonth(b, 31, "Декабрь");
    system("pause");
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2017, 21:46
Привет! Вот еще темы с решениями:

Считать год (четыре цифры), вывести только две последние
Задание таково: создать класс Date, содержащий три поля типа int: месяц, день и...

Для введенного с клавиатуры n, вывести фразу вида: «Мне 41 год»
Для введенного с клавиатуры n, вывести фразу вида: «Мне 41 год», «Мне 16...

По дате, введенной с клавиатуры вывести число, название месяца и год
Задача 4 Напишите программу, которая по дате, введенной с клавиатуры в...

Вывести на экран название животного, символизирующего этот год по восточному календарю
Вывести на экран название животного, символизирующего этот год по восточному...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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