Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2010, 19:33   #1
positivemann
 
Аватар для positivemann
 
Регистрация: 16.11.2009
Сообщений: 3
Вопрос Классы в C++

Всем привет . Такое дело к вам: есть задача на C++, уже неделю пытаюсь её сделать, делаю даже по примеру , но ничего не получается, иногда выдаёт совершенно непонятные для меня ошибки. Вот условие задачи: Класс «Дата» должен включать поля данных: день, месяц, год; методы: вывод даты и времени года и перегруженные операции: добавление (+) к дате целого числа (количества дней), сравнение двух дат (< , >).
Помогите разобраться, если можете, а то уже срочно надо, думал сделаю, а не получается. Вот листин того, что я сделал уже (если есть тупые ошибки, не судите строго - мог пропустить, т.к. задолбался уже и в проге я не слишком силён):
Код:
#include <vcl.h>
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;

char bufRus [256];
char* Rus(char* mes)
{ CharToOem (mes, bufRus);
    return bufRus;
}

class Data
{ private:
      int d,m,y;
   public:
      Data(int d, int m, int y);

      void view(){
        cout << Rus("Результат: ") << d << ":" << m << ":" << y << "\n";
      }

/*      int proverka() {
        int day=10000*h+100*m+s;
        if (day>240000 || day<0) return 0;
        else return 1;
      } */

/*      void now(){
        if (d>31) {
            m++; s=s-60;
        }
        if (m>60) {
            h++; m=m-60;
        }

        int day=10000*h+100*m+s;
        if (day>=60000 && day<=120000) {
            cout << Rus("Утро");
        }
        else if (day<180000 && day>120000) {
            cout << Rus("День");
        }
        else if (day>=180000 && day<=235959) {
            cout << Rus("Вечер");
        }
        else if (day>=000000 && day<60000) {
            cout << Rus("Ночь");
        }
        else cout << Rus("Неопределено. \nОшибка! Вы ввели нереальное время.");
      }*/
       void now(){
        if (d>30) {
            m++; d=d-30;
        }
        if (m>12) {
            y++; m=m-12;
        }

        if (d=12 || d=1 || d=2) {
            cout << Rus ("зима");
        }
       else    if (d=3 || d=4 || d=5) {
            cout << Rus ("весна");
        }
       else    if (d=6 || d=7 || d=8) {
            cout << Rus ("лето");
        }
       else    if (d=9 || d=10 || d=11) {
            cout << Rus ("осень");
        else cout << Rus("Неопределено. \nОшибка! Вы ввели нереальную дату.");
        }
      friend Data operator+(Data d1, Data d2);
      friend int operator>(Data d1,Data d2);
      friend int operator<(Data d1,Data d2);
      ~Data();  //деструктор

  };

Data::Data(int d1, int m1, int y1)
{       d=d1;
       m=m1;
       y=y1;
}
Data::~Data()
  {}

Data operator+(Data d1, Data d2)
{
    if (d1.d>30) {    d1.m++; d1.d=d1.d-30; }
    if (d1.m>12) {  d1.y++; d1.m=d1.m-12; }
    int d2 = d1.d + n;
    d2.m = 0;
    d2.y = 0;
    int m2=d1.m;
    int y2=d1.y;
    if (d2>30) {
        m2++; d2=d2-30;
    }

    if (m2>30) {
        y2++; m2=m2-12;
    }
    return Data(d2,m2,y2);
}
int operator>(Data d1,Data d2)
{
    int Year1=1000000*d1.d+10000*d1.m+d1.y;
    int Year2=1000000*d2.d+10000*d2.m+d2.y;

    if (Year1>Year2) return 1;
    else return 0;
}

int operator<(Data d1,Data d2)
{
    int Year1=1000000*d1.d+10000*d1.m+d1.y;
    int Year2=1000000*d2.d+10000*d2.m+d2.y;

    if (Year1<Year2) return 1;
    else return 0;
}

int main()
{
  int key;
  int n;
  int d1,m1,y1;
  do
  {  cout<< Rus("\n1 - Вывод времени года \n2 - Прибавление количества дней\n3 - Сравнение 2-х дат\n0 - Выход.\n\nВаш выбор: ");
     cin >> key;
     if (key == 1) {
       cout << Rus("\nДата (в формате \"дд мм гг\"): ");
       cin >> d1; cin >> m1; cin >> y1;
       Data Data1(d1,m1,y1); //создание объекта
       cout << Rus("\nВремя года: ");
       Data1.now();
       cout <<"\n";
     }
     else if (key == 2) {
       cout << Rus("\nДата 1 (в формате \"дд мм гг\"): ");
       cin >> d1; cin >> m1; cin >> y1;
       Data Data1(d1,m1,y1); //создание объекта
       cout << Rus ("Количество прибавляемых дней: ");
       Data Data3(0,0,0); //создание объекта 2
     }
     else if (key == 3) {
       cout << Rus("\nДата 1 в (формате \"дд мм гг\"): ");
       cin >> d1; cin >> m1; cin >> y1;
       Data Data1(d1,m1,y1); //создание объекта 1
       cout << Rus("Дата 2 (в формате \"дд мм гг\"): ");
       cin >> d2; cin >> m2; cin >> y2;
       Data Data2(d2,m2,y2); //создание объекта 2
       if (Data1>Data2) {
        cout << Rus("Дата 1 больше, чем дата 2.\n");
       }
       else if (Data1<Data2) {
        cout << Rus("Дата 2 больше, чем дата 1.\n");
       }
       else cout << Rus("Вы ввели равные даты.\n");
     }
   }
   while (key!=0);
}
P.S. В комментарии включил код, который проверяет время суток, мне же нужно время года, есть ниже, но не знаю правильно или нет, пожалуйста, посмотрите. Перегрузка операций обяхателна по условию. Заранее спасибо
positivemann вне форума Ответить с цитированием
Старый 15.03.2010, 20:45   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

а комменты кто будет писать? Я что -ли?

если хочешь, могу написать такой класс заново, недорого
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 15.03.2010, 21:16   #3
positivemann
 
Аватар для positivemann
 
Регистрация: 16.11.2009
Сообщений: 3
Вопрос

Цитата:
Сообщение от RUSt88 Посмотреть сообщение
а комменты кто будет писать? Я что -ли?

если хочешь, могу написать такой класс заново, недорого
В смысле доведёшь до ума задачу или как?
positivemann вне форума Ответить с цитированием
Старый 15.03.2010, 21:40   #4
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

напишу заново (не оч люблю в чужом коде разбираться), но за вознаграждение, писать на мыло
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы в Си Defa4ka Помощь студентам 6 01.03.2010 00:57
классы Ferghost Помощь студентам 3 05.06.2009 03:20
Классы в С++ Wirz Помощь студентам 1 04.06.2009 23:22
С++ классы KOLYTFR Помощь студентам 1 04.06.2009 19:58