Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

16.04.2013, 20:32. Просмотров 540. Ответов 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 20:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Инкапсуляция. Создание класса (C++):

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

Явное создание экземпляра класса и явная специализация шаблона класса - C++
Всем добрый день! Не могу разобраться - эти две технологии дают один и тот же результат? В каких случаях применять одно и другое?...

Возможно ли создание объекта шаблонного класса в функции этого класса? - C++
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон контейнера (множество) с операциями...

Построение описания класса, создание и уничтожение объектов этого класса - C++
Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть возможность раздельного изменения...

Создание объекта класса с полем являющимся объектом другого класса - C++
Bill a; cin>>a;//тут я ввел с помощью перегруженного оператора ElementSpiska c; //поля у Spiska(Bill A,int,string,int) ...

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

7
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 176
22.04.2013, 19:31  [ТС] #2
объясните пожалуйста как результат верхняя/нижняя неделя и её номер от начала семестра могут быть в формате
dd.mm.yyyy?
0
hofmn
Helter Skelter
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
22.04.2013, 19:34 #3
C++
1
string week = "22.04.2013";
0
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 176
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;
}
0
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 176
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;  //данное содержит в себе ошибку
      }
правильно ли я делаю? помогите пожалуйста!
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?
Помогите их описать с объяснениями.
0
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 176
17.05.2013, 19:12  [ТС] #7
help !
0
flasher167
4 / 4 / 0
Регистрация: 17.10.2012
Сообщений: 176
20.05.2013, 01:18  [ТС] #8
как дальше быть подскажите !
0
20.05.2013, 01:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 01:18
Привет! Вот еще темы с ответами:

Создание класса-списка на основе кода со списком без класса - C++
Здравствуйте. Не могли бы вы показать, как оформить этот код в виде класса. Смысл задания: это засунуть в список большое число(здесь я...

Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами - C++
Привести пример класса с конструктором и деструктором, созданием экземпляра класса с помощью конструктора с параметрами.

Создание статической функции класса, которая принимает экземпляр этого же класса как объект - C++
Привет. Есть такой код class Model { public: Model(); Model(int verticesSize, int facesSize); ~Model(); static void...

создание объекта класса в методе этого же класса - C++
собственно вопрос. можно ли создавать объект класса в методе того же класса? насколько это правильно и как это можно сделать (если это...


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

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

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