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

Перегрузка операторов. Инкапсуляция. Сделать так, чтобы оператор >> находил разницу между датами. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ сделать выборку из списка студентов, имеющих задолженность http://www.cyberforum.ru/cpp-beginners/thread888276.html
Помогите! Очень срочно! Нужно написать программу: 1. Сделать выборку из общего списка студентов дневной формы обучения, имеющих задолженность по оплате за обучение в сумме 123$ Желательно с пояснениями!!))) Заранее Спасибо)
C++ Блок схема Здравствуйте, помогите пожалуйста, какая из двух схем больше похожа на правильную? #include <iostream> #include <iomanip> #include <ctime> #include <cmath> #include <iomanip> #include <fstream> #include <conio.h> #include <stdlib.h> #include <windows.h> http://www.cyberforum.ru/cpp-beginners/thread888274.html
C++ Создание списка структур из структур исходного списка
Добрый день. В следующей программе, в функции nowaq не получается создать список из структур исходного списка(делаю по аналогии с функцией queue): #include <stdio.h> #include <string.h> #include <malloc.h> #include <iostream> #define Lmax 20 #define CLR while(fgetc(f)!='\n')
Построить список слов, который есть в заданном тексте. Определить сколько раз встречается каждое слово в этом тексте. C++
Здравствуйте у меня проблема, есть такое задание: Задан текст. Необходимо построить список слов, который есть в этом тексте. Определить сколько раз встречается каждое слово в этом тексте. Вот мой код: #include <iostream> #include <fstream> #include <string.h> #define N 80 using namespace std; struct list {
C++ Cоставить функцию, выводящую на экран слова, которые од-новременно содержатся в каждой из двух заданных строк http://www.cyberforum.ru/cpp-beginners/thread888269.html
Здравствуйте. Помогите составить функцию, выводящую на экран слова, которые од-новременно содержатся в каждой из двух заданных строк. В главной программе ввести с клавиатуры три строки длиной до 80 символов и вывести на экран слова, которые содержатся в каждой паре строке. Заранее спасибо!
C++ Поиск отрицательых циклов в графе подскажите пожалуйста, как определить, есть ли в графе отрицательные циклы....граф задаётся матрицей смежности P.S очень срочно нужно.....завтра контрольная, а я не могу в этом разобраться( подробнее

Показать сообщение отдельно
Praud
7 / 7 / 3
Регистрация: 25.02.2013
Сообщений: 233
02.06.2013, 17:54     Перегрузка операторов. Инкапсуляция. Сделать так, чтобы оператор >> находил разницу между датами.
Задание: Сделать так чтобы оператор >> находил разницу между датами.
Программа рабочая. Написана на С++

Возникли проблемы с инкапсуляцией (это мое мнение) или я просто что-то не так делаю...

Вот класс:

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
class CSemCalendar
{
    int m_year;
    int m_month;
    int m_day;
    int m_month_days[12];
 
    int SetDay(int);
    int SetMonth(int);
    int SetYear(int);
 
public:
        CSemCalendar();
        ~CSemCalendar();
 
        void GetDate(char *buf);
        int GetDay();
        int GetMonth();
        int GetYear();
 
        int SetDate(int AYear, int AMonth, int ADay);
        int SetDate(char *buf);
 
        void AddDay(int);
        int Week(int,int,int);
 
        //для Перегрузки операторов
         void operator-(CSemCalendar &t);
         friend CSemCalendar operator>>(CSemCalendar &t, CSemCalendar &d);  
 
};
Вот "механизм"

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
void CSemCalendar::operator-(CSemCalendar& t)
{
        m_day=m_day-m_day;
        m_month=m_month-m_month;
        m_year=m_year-m_year;
    
}
 
CSemCalendar operator>>(CSemCalendar &t, CSemCalendar &d)
{
    int t1,t2,t3;
 
    
 
    t1=t.GetDay()-d.GetDay();
    t.SetDay(t1);
    t2=t.GetMonth()-d.GetMonth();
    t.SetMonth(t2);
    t3=t.GetYear()-d.GetYear();
    t.SetYear(t3);
 
    
 
    return t;
}
Вот 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
void main()
{
        setlocale(LC_ALL, "Russian");
        CSemCalendar semestr_1; 
        CSemCalendar semestr_N;
        CSemCalendar semestr_2;
                    
        
        int start_day, start_month, start_year;
        int qday, qmonth, qyear;
        int i=0;
        int ofday,ofmonth,ofyear;
        int ofday2,ofmonth2,ofyear2;
 
    while(1)
    {
        printf("Введите дату начала занятий\n");
        scanf("%d", &start_day);
        scanf("%d", &start_month);
        scanf("%d", &start_year);
        if(!semestr_1.SetDate(start_day, start_month, start_year))
        {
            printf("%d ", semestr_1.GetDay());
            printf("%d ", semestr_1.GetMonth());
            printf("%d ", semestr_1.GetYear());
            printf("\nIncorrect date\n");
            continue;
        }
        else break;
    
    }
        while(1)
    {
          printf("Введите дату для задания\n");
          scanf("%d", &qday);
          scanf("%d", &qmonth);
          scanf("%d", &qyear);
          if(!semestr_N.SetDate(qday, qmonth, qyear))
          {
            printf("The date You have typed is invalid.\n");
            continue;
          }
 
        /*  if(!semestr_N.Week(qday, qmonth, qyear))
              printf("\nНижняя неделя");
          else
          {  printf("\nВерхняя неделя");  }
 
          ofday2=semestr_N.GetDay();
          ofmonth2=semestr_N.GetMonth();
          ofyear2=semestr_N.GetYear();
         
          while(1)
          {   
                    semestr_1.AddDay(7);
                    i++;
                    ofday=semestr_1.GetDay();
                    ofmonth=semestr_1.GetMonth();
                    ofyear=semestr_1.GetYear();
                    if((ofday>=ofday2)&&(ofmonth>=ofmonth2))
                        break;
          }*/
                    
            printf("\n%d\n\n", i);
 
            printf("Текущая дата: \n");
            printf("%d.%d.%d\n", semestr_N.GetDay(), semestr_N.GetMonth(), semestr_N.GetYear());
            printf("Задание: отнять текущую дату \n");
            semestr_N-semestr_N;
            printf("%d.%d.%d\n", semestr_N.GetDay(), semestr_N.GetMonth(), semestr_N.GetYear());
            printf("Разница между 2 датами : ");
            semestr_N>>semestr_1;
            printf("%d.%d.%d\n", semestr_N.GetDay(), semestr_N.GetMonth(), semestr_N.GetYear());
            printf("%d.%d.%d\n", semestr_1.GetDay(), semestr_1.GetMonth(), semestr_1.GetYear());
 
          getch();
       
            
    }
}
то что в комментах для прошлого задания, это можно не учитывать.

Операция >> не выполняет ничего...

Set и Get методы я не писал сюда, уверяю, что они работают Если понадобятся - скину.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru