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

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

Войти
Регистрация
Восстановить пароль
 
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
#1

Структура класса - C++

22.02.2013, 23:49. Просмотров 532. Ответов 4
Метки нет (Все метки)

Всем привет. Только начал изучать ООП. Вообщем есть задание:
Создать класс - дата с полями в закрытой части: день (1-31), месяц (1-12), год (целое число). Определить конструктор, деструктор, функции смены дня, месяца и года, получения значений дня, месяца и года, функции вывода по образцам: "15 января 2012 г." и "15.01.2012". Функции изменения значений полей класса должны проверять корректность задаваемых параметров.

Помогите пожалуйста создать функцию смены дня, месяца и года и "Функции изменения значений полей класса должны проверять корректность параметров, задаваемых."
И подскажите, все ли я сделал правильно в программе.

C++ (Qt)
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
#include <iostream>
using namespace std;
 
class Date
{
private:
    int day;
    int month;
    int year;
public:
    
    Date() {day=month=year=0;}
    Date(int a, int b, int c) {day=a;month=b; year=c;}
    ~Date(){};
 
 void print(void);
 };
 
void Date::print(void)
  {
      cout << day<<'.'<< month <<'.'<< year<<endl;
      char *mas[]={"january","february","march","april","may","june","july","august","september","october","november","december"};
      cout << day<<' '<< mas[month-1] <<' '<< year<<endl;
  }
 
void main()
{
    Date obj1(1,3,1997);
    obj1.print();
    getchar();getchar();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2013, 23:49     Структура класса
Посмотрите здесь:

C++ Создать объявление класса и разработать программу-драйвер, которая продемонстрирует работу класса.
C++ Вызов функций класса Dictionary функциями дружественного класса
Структура, как одно из свойств класса C++
C++ Как написать конструктор для класса, в котором содержится структура?
C++ Структура внутри класса
Структура в шаблоне класса C++
Структура внутри класса и передача массива C++
Нужен пример неизменяемого класса и класса от которого нельзя наследоваться C++
C++ Структура программы или наследование, без использования конструктора базового класса
Составьте программу, выводящую на экран сообщения об отличниках класса, о средней успеваемости учащихся класса C++
C++ Структура внутри класса
Изменение статического закрытого элемента данных класса посредством статической элемент-функции класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
23.02.2013, 00:02     Структура класса #2
C++
1
2
3
4
5
6
7
8
int Date::setMonth(int value){
  if (value>0 && value<13) {
    month=value;
    return 0;
  }
  else 
    return 1;
}
Простейший пример. При присвоении дня следует более тщательно проверять значения

Добавлено через 2 минуты
Цитата Сообщение от ovner Посмотреть сообщение
функции вывода по образцам: "15 января 2012 г." и "15.01.2012"
Я бы попросил объяснить твоего учителя, он что, считает, что каждый класс обязан уметь производить вывод на экран? Весьма сомнительно. Похоже учитель сам не особо понимает, зачем нужно ООП.
Develops
15 / 15 / 1
Регистрация: 19.02.2013
Сообщений: 40
23.02.2013, 00:03     Структура класса #3
Ну вот так, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Date
{
// Строки кода
 
public void setDay(int d);
public void setMonth(int m);
public void setYear(int y);
 
// Строки кода
};
 
void Date::setDay(int d)
{
    if((d < 0) || (d > 31))
    {
        cout << "Передан неправильный номер дня!" << endl;
        return;
    }
    day = d;
}
// Остальные методы реализуй по аналогии с этим.
В целом всё у тебя в коде хорошо, правда поля инициализируют, как правило, вот так:
C++
1
public Date(int a, int b, int c) : day(a), month(b), year(c) { }
Хотя это лишь дело вкуса
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6411 / 3050 / 300
Регистрация: 04.12.2011
Сообщений: 8,237
Записей в блоге: 3
23.02.2013, 00:23     Структура класса #4
ovner, тут возможно, имеется ввиду, что данные класса подчинены какой-то логике. То есть не любой месяц может иметь 31 день и не любой 30, а для февраля, ещё и нужна проверка года и его ограничение зависит от того, обычный год или високосный. Напишите метод проверки года. Потом метод проверки месяца, в котором по значению поля, скажем bool visokosniy, логика ограничения допустимых чисел для февраля ветвится. Соответственно и в конструкторе и методах установки значений, последовательность вызовов: год, месяц, число.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.02.2013, 01:08     Структура класса #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Я бы попросил объяснить твоего учителя, он что, считает, что каждый класс обязан уметь производить вывод на экран? Весьма сомнительно. Похоже учитель сам не особо понимает, зачем нужно ООП.
Насчёт вывода на экран спорить не буду, но выдать дату, как строку заданного формата, классу Date не помешает.
Yandex
Объявления
23.02.2013, 01:08     Структура класса
Ответ Создать тему
Опции темы

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