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

Создайте класс Date. Добавить в строковый класс функцию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В данном словосочетании заменить символы"шина" на один символ "*" и удалить букву"е" http://www.cyberforum.ru/cpp-beginners/thread119241.html
Если у кого-то есть пару мин.свободных ,помогите плиз с задачей: 1)В данном словосочетании заменить символы"шина" на один символ "*" и удалить букву"е" 2)Строки м-цы расположитьв порядке возрастания сумм четных элементов СИ#
C++ Vector как член класса собственно заголовок моего класса: #pragma once #include <Vector> #include "StdAfx.h" #include "PObject.h" #include "PLine.h" http://www.cyberforum.ru/cpp-beginners/thread119080.html
WinAPI и обработчик события своего HWND C++ WinAPI
Утро доброе. Необходимо перехватывать сообщения Windows, имея хендл окна. Рылся в инете и МСДНе - нашел, но там окно создается, и при создании ссылаются на WndProc, где уже и обрабатываются соообщения. В моем случае я имею хендл уже созданного окна. Т.е. я даже не перехватываю сообщения - я просто хочу назначить обработку сообщения (WM_PAINT, например) окна, имея его описатель. Подкиньте наводки...
Произведение элементов массива, расположенных после максимального по модулю элемента C++
Помогите написать программу. Я работаю с программой MS Visual Studio 2005. В одномерном массиве, состоящем из п целых элементов, вычислить 1) количество элементов массива, больших С; 2) произведение элементов массива, расположенных после максимального по модулю элемента. Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом — все положительные...
C++ Нод http://www.cyberforum.ru/cpp-beginners/thread118803.html
Даны два числа a и b. Найти их НОД (наибольший общий делитель). Название Размерность Тип a 8 вх b 8 вх res 8 вых
C++ Количество нулевых битов in1 4бита in2 4бита out1 1бит out2 1бит out3 1бит На входе два двоичных числа: in1,in2. Определить количество нулевых битов в каждом из чисел. Если в in1 больше нулевых битов , чем в in2, то на выход out1 подать 1. Если в in2 больше - то на выход out2 подать 1. При равном количестве - на out3 подать 1. подробнее

Показать сообщение отдельно
TheAthlete
 Аватар для TheAthlete
151 / 151 / 12
Регистрация: 31.08.2010
Сообщений: 529
19.03.2011, 16:40     Создайте класс Date. Добавить в строковый класс функцию
Привет! Буквально сейчас занимаюсь реализацией класса Date для курсака. Выкладываю код, может тебе поможет. Содержит перегрузку операторов, ввод даты числами с помощью конструктора, определение времени года и декады месяца

Собственно код:

Date.h

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
#ifndef DATE_H
#define DATE_H
 
#include <ctime>
#include <string>
 
class Date {
  friend bool operator==(const Date&, const Date&);
  friend bool operator!=(const Date&, const Date&);
  friend std::ostream& operator<<(std::ostream& out, const Date& date);
  //friend std::istream& operator>>(std::istream& in, const Date& date);
private:
    int day; // день
    int month; // месяц
    int year; // год
    
    tm timeinfo;
 
    time_t seconds;
    time_t rawtime;
public:
    Date(): day(0), month(0), year(0) {}
    Date(int d, int m, int y);
    ~Date() { }
 
    time_t getSeconds() const { return seconds; }
    tm getTimeInfo()    const { return timeinfo; }
  void setTimeInfo(time_t sec);
 
  // получаем дату для данного экземпляра (объекта)
  int getDay()        const { return timeinfo.tm_mday; }
  int getMonth()      const { return timeinfo.tm_mon + 1; }
  int getYear()       const { return timeinfo.tm_year + 1900; }
  int getDayOfYear()  const { return timeinfo.tm_yday + 1; }
  int getDayOfWeek()  const { return ((timeinfo.tm_wday == 0) ? 7 : timeinfo.tm_wday); }
  std::string getTimeOfYear(); // получить время года
  int getTenDayPeriodOfTheMonth(); // получить декаду месяца
 
  void setDay(int d);
  void setMonth(int m);
  void setYear(int y);
 
  // статические функции-члены, т.е. относятся к классу, а не к объекту
  static std::string getDayOfWeek(int dayOfWeek);
  static std::string getMonth(int month);
 
  Date& operator++(); // префиксный оператор инкремента (++date), увеличивается день на один
  Date& operator--(); // префиксный оператор декремента (--date), уменьшается дань на один
  Date operator++(int); // постфиксный оператор инкремента (date++), увеличивается день на один
  Date operator--(int); // постфиксный оператор декремента (date--), уменьшается день на один
  Date& operator+=(const int&);
  Date& operator-=(const int&);
 
    void printTimeInfo(); // выводим на экран значения структуры timeinfo
};
 
Date operator+(const Date&, const int&);
Date operator-(const Date&, const int&);
 
inline bool operator==(const Date& lhs, const Date& rhs) {
  return lhs.day == rhs.day && lhs.month == rhs.month && lhs.year == rhs.year;
}
 
inline bool operator!=(const Date& lhs, const Date& rhs) {
  return !(lhs == rhs);
}
 
#endif
date.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
#ifndef DATE_H
#define DATE_H
 
#include <ctime>
#include <string>
 
class Date {
  friend bool operator==(const Date&, const Date&);
  friend bool operator!=(const Date&, const Date&);
  friend std::ostream& operator<<(std::ostream& out, const Date& date);
  //friend std::istream& operator>>(std::istream& in, const Date& date);
private:
    int day; // день
    int month; // месяц
    int year; // год
    
    tm timeinfo;
 
    time_t seconds;
    time_t rawtime;
public:
    Date(): day(0), month(0), year(0) {}
    Date(int d, int m, int y);
    ~Date() { }
 
    time_t getSeconds() const { return seconds; }
    tm getTimeInfo()    const { return timeinfo; }
  void setTimeInfo(time_t sec);
 
  // получаем дату для данного экземпляра (объекта)
  int getDay()        const { return timeinfo.tm_mday; }
  int getMonth()      const { return timeinfo.tm_mon + 1; }
  int getYear()       const { return timeinfo.tm_year + 1900; }
  int getDayOfYear()  const { return timeinfo.tm_yday + 1; }
  int getDayOfWeek()  const { return ((timeinfo.tm_wday == 0) ? 7 : timeinfo.tm_wday); }
  std::string getTimeOfYear(); // получить время года
  int getTenDayPeriodOfTheMonth(); // получить декаду месяца
 
  void setDay(int d);
  void setMonth(int m);
  void setYear(int y);
 
  // статические функции-члены, т.е. относятся к классу, а не к объекту
  static std::string getDayOfWeek(int dayOfWeek);
  static std::string getMonth(int month);
 
  Date& operator++(); // префиксный оператор инкремента (++date), увеличивается день на один
  Date& operator--(); // префиксный оператор декремента (--date), уменьшается дань на один
  Date operator++(int); // постфиксный оператор инкремента (date++), увеличивается день на один
  Date operator--(int); // постфиксный оператор декремента (date--), уменьшается день на один
  Date& operator+=(const int&);
  Date& operator-=(const int&);
 
    void printTimeInfo(); // выводим на экран значения структуры timeinfo
};
 
Date operator+(const Date&, const int&);
Date operator-(const Date&, const int&);
 
inline bool operator==(const Date& lhs, const Date& rhs) {
  return lhs.day == rhs.day && lhs.month == rhs.month && lhs.year == rhs.year;
}
 
inline bool operator!=(const Date& lhs, const Date& rhs) {
  return !(lhs == rhs);
}
 
#endif
Пример использования:

main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "Date.h"
#include <iostream>
 
using std::cout;
using std::endl;
using std::cin;
 
int main() {
  Date data(19, 3, 2011);
  cout << data << endl;
  cout << data.getTimeOfYear() << endl;
  cout << data.getTenDayPeriodOfTheMonth() << "-я декада месяца" << endl;
 
  return 0;
}
 
Текущее время: 17:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru