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

Описать класс ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
mkobozev
Сообщений: n/a
24.10.2010, 19:48     Описать класс ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД #1
Доброго времени суток, форумчане. Прошу у вас помощи с решением задачи

Описать класс ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД и следующими методами:
a) ввода и вывода на экран даты;
b) по году и порядковому номеру дня в году вычисляющую число и месяц года, соответствующему этому дню;
c) находящую в массиве введенных дат самую позднюю.

есть пример: Описать класс ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД и следующими методами:
a) ввода и вывода на экран даты;
b) вычисления порядкового номера дня в году по введенной дате;
c) нахождения в массиве введенных дат самой ранней.

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// Файл date.h
#ifndef __DATE_H
#define __DATE_H
 
class date
{
    int year;
    int month;
    int day;
    int visokos(int) const;//скрытый метод, проверяющий 
                        //является ли год високосным 
 
public:
    date ();//Конструктор
    int get_year() const {return year;}// метод, 
                            //возвращающий год
    int get_month() const {return month;} ;}// метод, возвращающий месяц
    int get_day() const {return day;} ;}// метод, 
                            //возвращающий день
    void vvod();// метод, обеспечивающий ввод даты
    void vivod () const; ();// константный метод, 
                        //обеспечивающий вывод даты
    int day_number() const; // константный метод, вычисляющий
                        // порядковый номер дня в 
                    //году по введенной дате; 
 
    date & min (date & ) ;// метод, возвращающий самую 
                        //раннюю из двух дат
};
 
#endif
 
// Файл date.cpp
#include <iostream.h>
#include <iomanip.h>
#include "date.h"
 
int tab_day [2][12]= {{31,28,31,30,31,30,31,31,30,31,30,31},
                 {31,29,31,30,31,30,31,31,30,31,30,31}};
 
 
date:: date (){cout<<"Done!";}
 
//******* Метод, проверяющий является ли год високосным******
int date:: visokos(int year) const
{
    int k=year%4==0&&year%100!=0||year%400==0;
    return k;
}
 
//*********Метод, обеспечивающий  ввод даты*****************
void  date::vvod()
{
    N: cout<<"Введите день, месяц, год\n";
    cin>>day>>month>>year;
    int k=visokos(year);
    if (day<1||day>tab_day[k][month-1]||month<1||month>12||year<0)
        {cout<<"Ошибка ввода\n"; goto N;}
    else cout<<"Дата введена\n";
}
//*********Метод, обеспечивающий  ввод даты****************
void date:: vivod () const
{
  cout<<setw(2)<<day<<'.'<<setw(2)<<month<<'.'<<year<<"\n";
}
 
//Метод, вычисляющий порядковый номер дня в году по //веденной дате
int date::day_number() const
{
    int d=day;
    int k=visokos(year);
    for (int i=0; i<month-1; i++)
        d+=tab_day[k][i];
    return d;
}
 
//********Метод, возвращающий раннюю из двух дат **********
date & date:: min (date & M)
{
        if (year<M.get_year() || year==M. get_year()&&(month<M.get_month()|| month==M.get_month()&& day<M.get_day())) return *this;
        return M;
}
 
//Файл date_main.cpp
# include <iostream.h>
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include "date.h"
 
main ()
{
N:
    clrscr();
    cout<< "Выберети функцию\n";
    cout<<" 1 – Ввод даты\n";
    cout<<" 2 – Вывод даты\n";
    cout<<" 3 – Порядковый номер даты\n";
    cout<<" 4 – Самая ранняя  дата\n";
    cout<<" 0 – Выход из программы\n";
    int nom;
    cin>>nom;
    switch (nom)
    {
        case 0: exit(0);
        case 1: {date d; d.vvod(); break;}
        case 2: {date d; d.vvod(); d.vivod(); break;}
        case 3: {date d; d.vvod(); cout<<"\nПорядковый номер"<<d.day_number(); break;}
        case 4:
            {
                cout<<"\nВведите количество дат ";
                int n; cin>>n;
                date* mas = new date [n];
                for (int i=0; i<n; i++)
                    mas[i].vvod();
                cout<<"\nИз введенных дат:\n";
                date m=mas[0];
                for (int i=0; i<n; i++)
                {
                    mas[i].vivod();
                    m=mas[i].min(m);
                }
                cout<<"\nСамая ранняя  ";
                m.vivod();
                delete []mas;
                break;
            }
        default: cout<<"Ошибка ввода ";
    }
    cout<<"\nДля продолжения нажмите Enter "; getch();
    goto N;
}
Прошу вашей помощи в разборе задачи, и как используя пример решить поставленную задачу. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2010, 19:48     Описать класс ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД
Посмотрите здесь:

Дата, год, месяц, день C++
Дата в формате <день>.<месяц>.<год> C++
Создать класс Date – дата, содержащая поля: день, месяц, год. C++
C++ Оформить в виде структуры год, месяц, число. Описать функцию для определения дня недели
C++ Дан файл , содержащий различные даты. Каждая дата – это число, месяц и год
C++ Из класса "Дата" с полями день, месяц, год создать класс "Время" с дополнительными полями час, минута, секунда
Класс "Дата": день, месяц, год C++
C++ Создайте класс «Дата» со свойствами год, високосный год, месяц, день месяца и день недели

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru