Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- */
- #include <iostream>
- #include <iomanip> //Манипуляторы для поточных вводов-выводов
- #include <time.h> //Это наша суть, работа со временем
- #include <fstream> //Файловые потоки ввода/вывода
- using namespace std;
- void main(void)
- {
- setlocale(LC_ALL,"Russian");
- int cYear; //Год на который будет разрабатыватся календарь
- struct tm *date; //Структурно календарной даты
- time_t temp = time(NULL);
- char *Month[] = {"Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь","Ноябрь", "Декабрь"};
- ofstream file("Calendar.txt"); //Файловый ввод
- cout << "Введите год : ";
- cin >> cYear; //Ввод года
- //Поставим date в 1 января введенного года
- date = localtime(&temp); //Получим текущую дату
- date->tm_year = cYear - 1900;
- date->tm_mon = 0; //Это январь
- date->tm_mday = 1; //Это первое число
- time_t a = mktime(date); //Создадим time_t исходя из нашей даты
- int limitsDay = date->tm_year; //Для цикла определим текущий год из структуры
- int Selection = -1; //Опция выбора (смещение строки) если текущий месяц закончился
- //Пока структура указывает еще на введенный год
- while (date->tm_year == limitsDay)
- {
- if (Selection != date->tm_mon) //Проверим не закончился ли текущий месяц (нам же шапку вывести нужно)
- {
- //А если месяц закончился, то перейдем на след. строку
- cout<< endl;
- file<< endl;
- //Выведим название месяца
- cout<< endl<< Month[date->tm_mon] << endl;
- file<< endl<< Month[date->tm_mon] << endl;
- //Выведим шапку дней недели
- cout<< setw(3) << "Вс"<< setw(3) << "Пн"<< setw(3) << "Вт"<< setw(3) << "Ср"<< setw(3) << "Чт"<< setw(3) << "Пт"<< setw(3) << "Сб"<<endl;
- file<< setw(3) << "Вс"<< setw(3) << "Пн"<< setw(3) << "Вт"<< setw(3) << "Ср"<< setw(3) << "Чт"<< setw(3) << "Пт"<< setw(3) << "Сб"<<endl;
- Selection = date->tm_mon; //Перезапишим Selection в уже новый-текущий месяц
- if (date->tm_wday != 0) //Если день недели в новом месяце не сначало, то отделим пробелами
- {
- for (int i = 0; i < date->tm_wday; i++)
- {
- cout<< setw(3) << "";
- file<< setw(3) << "";
- }
- }
- }
- cout<<setw(3)<<date->tm_mday; //Вывод дня в месяце
- file<< setw(3) << date->tm_mday;
- if (date->tm_wday == 6) //Если дни недели закончились перейдем на новую строку
- {
- cout << endl;
- file << endl;
- }
- date->tm_mday++; //Добавим 1 день
- a = mktime(date); //Свормируем новое время по данным структуры
- }
- cout << endl;
- file.close(); //Закроем файл
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement