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

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

Войти
Регистрация
Восстановить пароль
 
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 175
#1

Инкапсуляция. Создание класса - C++

16.04.2013, 20:32. Просмотров 527. Ответов 7
Метки нет (Все метки)

Задана дата начала занятий. Для даты внутри семестра определить, является ли текущая учебная неделя верхней или нижней и посчитать ее номер. Максимальная длина семестра - 5 месяцев (не выдавать результат для дат, до которых прошло больше 5 месяцев после начала семестра). Начало и конец семестра могут быть в разных астрономических годах.

Имя класса: СSemCalendar
Исходное данное: строка в формате dd.mm.yyyy
Имя метода для установки исходного данного: SetBeginningDate
Имена полей, в которых хранятся исходные данные: m_beg_year, m_beg_month, m_beg_day
Результат: строка в формате dd.mm.yyyy
Прототип метода, который будет выполнять действие:
C++
1
2
3
int Up(int,int,int);
int Low(int,int,int);
int Week(int,int,int);
Имена объектов: semestr_1, semestr_N
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 20:32     Инкапсуляция. Создание класса
Посмотрите здесь:

Инкапсуляция. C++
Создание класса/ C++
C++ инкапсуляция
Создание класса C++
C++ С++ создание класса
Создание экземпляр класса из другого класса C++
C++ Создание класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 175
22.04.2013, 19:31  [ТС]     Инкапсуляция. Создание класса #2
объясните пожалуйста как результат верхняя/нижняя неделя и её номер от начала семестра могут быть в формате
dd.mm.yyyy?
hofmn
Helter Skelter
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
22.04.2013, 19:34     Инкапсуляция. Создание класса #3
C++
1
string week = "22.04.2013";
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 175
25.04.2013, 21:06  [ТС]     Инкапсуляция. Создание класса #4
подскажите на правильно ли я пути?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class СSemCalendar
{   int m_beg_year;   
    int m_beg_month;
    int m_beg_day;
public:
    СSemCalendar();       // конструктор
    ~СSemCalendar();     // деструктор
 
    int  Getm_beg_year ();  
    int  Getm_beg_month();
    int  Getm_beg_day();
    void GetCalendar (char *buf);
 
    int Setm_beg_year (int);
    int Setm_beg_month(int);
    int Setm_beg_day (int);
    int SetCalendar (int Ayear,int Amonth,int Aday);
    int SetCalendar (char *buf);
 
    int Up(int,int,int);
    int Low(int,int,int);
    int Week(int,int,int);
  };
Добавлено через 25 минут
мне кажется я что то пропустил в data.h ..
и не могу понять что делать дальше в файле
semestr_N.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <stdio.h>
#include "data.h"
 
СSemCalendar::СSemCalendar()
{
    m_beg_year = 0; 
    m_beg_month = 0;
    m_beg_day = 0;
}
 
СSemCalendar::~СSemCalendar()
{}
 
int СSemCalendar::Getm_beg_year ()
{
    return m_beg_year;
}
 
int СSemCalendar::Getm_beg_month()
{
    return m_beg_month;
}
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 175
01.05.2013, 20:11  [ТС]     Инкапсуляция. Создание класса #5
semestr_N.cpp
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
#include <iostream>
#include <stdio.h>
#include "data.h"
 
СSemCalendar::СSemCalendar()
{
    m_beg_year = 1; 
    m_beg_month = 1;
    m_beg_day = 1;
    m_month_days[0]=31;
    m_month_days[1]=28;
    m_month_days[2]=31;
    m_month_days[3]=30;
    m_month_days[4]=31;
    m_month_days[5]=30;
    m_month_days[6]=30;
    m_month_days[7]=31;
    m_month_days[8]=30;
    m_month_days[9]=31;
    m_month_days[10]=30;
    m_month_days[11]=31;
}
 
СSemCalendar::~СSemCalendar()
{}
 
 
int СSemCalendar::Getm_beg_year ()
{
    return m_beg_year;
}
 
int СSemCalendar::Getm_beg_month()
{
    return m_beg_month;
}
 
int СSemCalendar::Getm_beg_day()
{
    return m_beg_day;
}
 
void СSemCalendar::GetCalendar (char *buf)
{
    sprintf(buf,"%02d.%02d.%04d",m_beg_day,m_beg_month,m_beg_year);
}
 
int СSemCalendar::SetCalendar (int Ayear,int Amonth,int Aday)
{
    return
        Setm_beg_year(Ayear)&&
        Setm_beg_month(Amonth)&&
        Setm_beg_day(Aday);
}
 
int СSemCalendar::SetCalendar (char *buf)
{
    int y,m,d;
    sscanf(buf,"%d.%d.%d",&d,&m,&y);
    return SetCalendar (y,m,d);
}
 
int СSemCalendar::Setm_beg_day  (int ADay)
      {
        //проверяем корректность исходных данных
        if(ADay>=1&&ADay<=m_month_days[m_beg_month-1])
        { //данное корректно - устанавливаем его
          m_beg_day=ADay;
          return 1;
        }
        else
          return 0; //данное содержит в себе ошибку
      }
 
      //установить месяц по его номеру
      int СSemCalendar::Setm_beg_month(int AMonth)
      {
        //проверяем корректность исходных данных
        if(AMonth>=1&&AMonth<=12)
        { //данное корректно - устанавливаем его
          m_beg_month=AMonth;
          return 1;
        }
        else
          return 0; //данное содержит в себе ошибку
      }
 
      int СSemCalendar::Setm_beg_year (int AYear)
      {
        //проверяем корректность исходных данных
        if(AYear>=1&&AYear<=9999)
        { //данное корректно - устанавливаем его
          m_beg_year=AYear;
          //в зависимости от того, является ли текущий год високосным,
          //  нужно установить количество дней в феврале месяце
          if(m_beg_year%4==0&&m_beg_year%100!=0||m_beg_year%400==0)
            m_month_days[1]=29; //високосный
          else
            m_month_days[1]=28; //обычный
          return 1;
        }
        else
          return 0;  //данное содержит в себе ошибку
      }
правильно ли я делаю? помогите пожалуйста!
Praud
7 / 7 / 3
Регистрация: 25.02.2013
Сообщений: 237
16.05.2013, 14:31     Инкапсуляция. Создание класса #6
Ап теме. Такое же задание

Вот моя реализация класса:
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
class СSemCalendar
{
    int m_beg_year;
    int m_beg_month;
    int m_beg_day;
    int m_month_days[12];
 
    int SetDay(int);       
    int SetMonth(int);   
    int SetYear(int);
 
public:
    СSemCalendar();
    ~СSemCalendar();
 
    void GetDate (char *buf); 
    int  GetDay  ();      
    int  GetMonth();       
    int  GetYear ();     
 
    void SetBeginningDate(int AYear,int AMonth,int ADay);
 
    int Up(int,int,int);
    int Low(int,int,int);
    int Week(int,int,int);
};
А теперь cpp
Main пока не писал

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
#include "stdafx.h"
#include "stdio.h"
#include <cmath>
#include <stdlib.h>
#include "SemCalendar.h"
 
СSemCalendar::СSemCalendar()
{
    m_beg_year=1;
    m_beg_month=1;
    m_beg_day=1;
 
    m_month_days[0]=31;
    m_month_days[1]=28;
    m_month_days[2]=31;
    m_month_days[3]=30;
    m_month_days[4]=31;
    m_month_days[5]=30;
    m_month_days[6]=30;
    m_month_days[7]=31;
    m_month_days[8]=30;
    m_month_days[9]=31;
    m_month_days[10]=30;
    m_month_days[11]=31;
}
 
СSemCalendar::~СSemCalendar()
{}
 
 
int Up(int Add,int Amm,int Ayy)
{
 
}
 
int Low(int Add,int Amm, int Ayy)
{
 
}
 
int Week(int Add, int Amm, int Ayy)
{
    
}
 
 
//  ************Get Методы************ 
 
void СSemCalendar::GetDate (char *buf)
{
      //здесь не проверяем, чтобы в переданном буфере было достаточно
        //  памяти: передать правильный буфер должна программа,
        //  которая вызвала этот метод;
        //как известно, сама функция sprintf исходит из тех же соображений
        sprintf(buf,"%02d.%02d.%04d",m_beg_day,m_beg_month,m_beg_year);
}
 
// Взять номер дня
int СSemCalendar::GetDay()
{
return m_beg_day;  
}
// Взять номер месяца
int СSemCalendar::GetMonth()
{
    return m_beg_month;
}
// Взять номер года
int  СSemCalendar::GetYear ()
{
    return m_beg_year;
}
 
//************Set Методы************
 
// Установить день по его номеру
int СSemCalendar::SetDay  (int ADay)
      {
        //проверяем корректность исходных данных
        if(ADay>=1&&ADay<=m_month_days[m_beg_month-1])
        { //данное корректно - устанавливаем его
          m_beg_day=ADay;
          return 1;
        }
        else
          return 0; //данное содержит в себе ошибку
      }
 //установить месяц по его номеру
 
int СSemCalendar::SetMonth(int AMonth)
      {
        //проверяем корректность исходных данных
        if(AMonth>=1&&AMonth<=12)
        { //данное корректно - устанавливаем его
          m_beg_month=AMonth;
          return 1;
        }
        else
          return 0; //данное содержит в себе ошибку
      }
 
 //установить год по его номеру
int СSemCalendar::SetYear (int AYear)
      {
        //проверяем корректность исходных данных
        if(AYear>=1&&AYear<=9999)
        { //данное корректно - устанавливаем его
          m_beg_year=AYear;
          //в зависимости от того, является ли текущий год високосным,
          //  нужно установить количество дней в феврале месяце
          if(m_beg_year%4==0&&m_beg_year%100!=0||m_beg_year%400==0)
            m_month_days[1]=29; //високосный
          else
            m_month_days[1]=28; //обычный
          return 1;
        }
        else
          return 0;  //данное содержит в себе ошибку
      }
Что писать в методах Up, week, Low?
Помогите их описать с объяснениями.
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 175
17.05.2013, 19:12  [ТС]     Инкапсуляция. Создание класса #7
help !
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 01:18     Инкапсуляция. Создание класса
Еще ссылки по теме:

Создание статической функции класса, которая принимает экземпляр этого же класса как объект C++
C++ Создание экземпляра класса до определения класса
C++ Инкапсуляция класса, который является элементом динамического списка
Создание класса-списка на основе кода со списком без класса C++
C++ создание объекта класса в методе этого же класса

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

Или воспользуйтесь поиском по форуму:
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 175
20.05.2013, 01:18  [ТС]     Инкапсуляция. Создание класса #8
как дальше быть подскажите !
Yandex
Объявления
20.05.2013, 01:18     Инкапсуляция. Создание класса
Ответ Создать тему
Опции темы

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