Задача: Формирование календаря для любого года

Тема в разделе "C/C++/C#", создана пользователем DeNN, 10 дек 2010.

Статус темы:
Закрыта.
  1. DeNN

    DeNN Гость

    Написать программу формирования календаря для любого года начиная с 1900 года.(1 января 1900 года - понедельник).Результатом работы программы должен быть текстовый файл, содержащий календарь в привычном для пользователя виде, что позволит просматривать его и получать копии, не прибегая к новым запускам программы.


    Собственно вот задача....а вот как с файлом работать чёт не догоняю
    Помогите в решении...
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    А как сформировать календарь значит знаете?
     
  3. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    DeNN
    Пример календаря в текстовом виде, пожалуйста.
     
  4. DeNN

    DeNN Гость

    Честно говоря в голове всегда понятней чем на языке С:welcome:
    вот....не могли бы вы мне помочь?

    Добавлено: Январь
    ПН ВТ СР ЧТ ПТ СБ ВС
    01 02 03 04 05 06 07
    08 09 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 25 27 28
    29 30 31
    и так далее весь год
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    DeNN
    Наброски есть? Хоть что-нибудь?
     
  6. DeNN

    DeNN Гость

    Признаться особых набросков нет....
    Да и не хочется как то всё на халяву...
    вы можете мне помочь с началом....если вам не трудно....
    только можно не за мудреное начало, а то я дилетант в этом деле ещё...и могу не понять:welcome:
     
  7. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    DeNN
    Не уходи далеко.

    Добавлено: DeNN
    Нужно вводить только год? Я правильно понял!?
     
  8. DeNN

    DeNN Гость

  9. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Использовал интернациональный (компьютерный) формат дней недели (с Вс по Сб)..
    Посчитал что под нашу Россию матушку форматировать не нужно, если захочешь сделаешь уже сам, там от 1-до 3х строчек добавить нужно :)

    Код (C++):
    /*
    Написать программу формирования календаря для любого года начиная с 1900 года.(1 января 1900 года - понедельник).
    Результатом работы программы должен быть текстовый файл, содержащий календарь в привычном для пользователя виде,
    что позволит просматривать его и получать копии, не прибегая к новым запускам программы.
    /*
    /*
    codeby.net
    Autor: DarkKnight125 (Denis Goncharov)
    */

    #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(); //Закроем файл

    }
    Добавлено: Намного более интересная реализация получится например если месяца идут не сверху вниз, а 3x3....
    Если делать ее конечно без учетов координат консоли, но это уже другое задание и усилий приложить нужно в раз 5 больше, а то и больше.. :)
     

    Вложения:

    • Calendar.txt
      Размер файла:
      1,7 КБ
      Просмотров:
      23
    • calendar1.jpg
      calendar1.jpg
      Размер файла:
      92,8 КБ
      Просмотров:
      31
    • calendar2.jpg
      calendar2.jpg
      Размер файла:
      107,9 КБ
      Просмотров:
      28
  10. DeNN

    DeNN Гость

    Спасибо огромное добрые люди:( :)
     
Загрузка...
Похожие Темы - Задача Формирование календаря
  1. Янчик
    Ответов:
    0
    Просмотров:
    481
  2. TrishaRay
    Ответов:
    1
    Просмотров:
    781
  3. elzim
    Ответов:
    0
    Просмотров:
    929
  4. ShaoKahn
    Ответов:
    1
    Просмотров:
    1.120
  5. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.105
Статус темы:
Закрыта.

Поделиться этой страницей