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

Класс "дата", расчет дней недели - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структуры Си++ http://www.cyberforum.ru/cpp-beginners/thread214362.html
Марка машины,балансовая стоимость,процент амортизации(static),месячная амортизация(стоимость*процент/(12*100). Нужно написать: 0.структура 1.найти всё машины с минимальной балансовой стоимостью.2.добавить запись в начало.3.удалить машины,балансовая стоимость которых больше указанной.4.изменить указанную марку машины на другую.ПОМОГИТЕ РАЗОБРАТЬСЯ!
C++ Как узнать размер объекта класса? Здравствуйте, Дамы и Господа! Есть ли функция, передающая значение количества байт, отведенных в памяти для объекта класса? Например для такого класса: class mas { int *a; public: int *f() { http://www.cyberforum.ru/cpp-beginners/thread214341.html
Ошибка при удалении єлемента из однонаправленного списка C++
Помогите исправить ошибку в функции удаления элемента из однонаправленного списка: void linklist::Del( double a) //а-элемент, который нужно найти в списке и удалить { link*current=first;// первый элемент while(current)// пока есть значение ищем { if(current->data==a)// если элемент в списке== заданному(а) { delete current->data;//удалить этот элемент }
C++ Получение команд из CMD
Собственно, есть тривиальная задача написания программы на С++ с CLI(не путать с C++/CLI мелко-мягких). Прога задумывается под две ОС: Windows, Linux Ubuntu. Вроде бы и все просто, но нигде не могу найти документацию и примеры подобных приложений. Буду очень благодарна, если знающие люди поделятся.
C++ Приведение типов http://www.cyberforum.ru/cpp-beginners/thread214327.html
Доброго времени суток. Есть вопрос. Допустим: class Base { ..... } class Derived:public Base{ .... }
C++ Структуры Всем снова здравствуйте. Сново проблема) Дано задание: Личная библиотека. Картотека домашней библиотеки: выходные данные книги (авторы, название, издательство и так далее), раздел библиотеки (специальная литература, хобби, домашнее хозяйство, беллетристика и так далее), происхождение (покупка, кража, подарок) и наличие книги в данный момент. Выбор книг по автору, году; инвентаризация библиотеки... подробнее

Показать сообщение отдельно
Злобный
2 / 2 / 0
Регистрация: 18.09.2010
Сообщений: 43

Класс "дата", расчет дней недели - C++

19.12.2010, 03:00. Просмотров 2127. Ответов 2
Метки (Все метки)

Всем доброй ночи, всех с наступающим.
Прошу помочь программкой.
Задание: Саздайте класс "дата", в котором будут храниться три числа - год, месяц, число. В классе содержатся методы: (1) конструктор, задающий начальные значения, (2) деструктор, сообщающий об удалении объекта, (3) метод "изменить" с тремя параметрами, задающими новые значения, (4) метод "печать", выводящий дату, (5) метод "вычисление", выводящий день недели заданной даты.
Вот, что получилось:
MAIN.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
#include <cstdlib>
#include <iostream>
 
using namespace std;
#include "Date1.h"
#include "Date2.cpp" 
 
void enter(int &,int &,int &);  //ввод трёх переменных
 
int main()           //ф-ия main
{
    int var, g, m, d;      //задание параметров var(выбор), g(год), m(месяц), d(день)
    char count='y';    //переменная повтора работы
    enter(g,m,d);     //ввод нач. переменных
    Date l(g,m,d);         //создание объекта Date1    
int OK;
do
 {
      cout<<"Возможны следующие методы:\n"<<endl;
      cout<<"  1. 'изменить'  , будет введена новая дата\n";
      cout<<"  2. 'печать'  , будет выведена дата\n";
      cout<<"  3. 'вычисление', будет вычислен день недели";
      cout<<"Выберите метод 1-3, = ";
      cin>>var;  //ввод выбора 
      if((var>3)||(var<1))cout<<"Ошибка ввода!"; //если введено не 1..3
      else
      {
          switch(var) //start swich 
          {
               case 1:
                    enter(g,m,d);    //ввод данных
                    l.change(g,m,d);  //смена даты
                    break;           //сделано
               case 2:
                    cout<<"Сейчас  "; l.print();   //печать даты
                    cout<<endl;
                    break;
               case 3: 
                    l.process(); //вычисление
                    break;
                   
          } //end switch
      }
      
  cout<<"повторить?(1/0)"<<endl;
  cout<<"1-да; "<<"0-нет"<<endl;
   cin>>OK;
    }
    while(OK==1);
    system("pause");
    return 0;        
}
 
void enter(int &a,int &b,int &c)
{
    cout<<"введите год = ";
    cin>>a;
    cout<<"введите месяц = ";
    cin>>b;
    cout<<"введите число = ";
    cin>>c;
    return;
}
DATE1.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
//header
#ifndef DATE1_H
#define DATE1_H
 
 
class Date
{
 
public:
       Date(int, int, int); //конструктор
       ~Date();             //деструктор
       void change( int, int, int);   //меняем дату
       void print();                //печать
       void process();              //расчет
 
       
private:
        int year; //ввод года
        int month;//ввод месяца
        int day;//ввод числа
      
        
};      //
 
#endif
DATE2.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
//опр. методов
#include<iostream>
using std::cout;
using std::endl;
 
#include<iomanip>
 
using std::setfill;
using std::setw;
 
#include "Date1.h"  //вкл. класс DATE
//конструктор
Date::Date(int a, int b, int c)
{
 change(a,b,c);  //присваиваем значения
}
//деструктор
Date::~Date()
  {
     cout<<"Объект удален!";
  } 
  /////////////////////////////////////////////////////////
void Date::change( int g, int m, int d )   //ставим дату
{
   if(g>0)year=g; else year=0;
   if(m>1&&m<13)month=m; else month=0;
   if(d>1&&d<32)day=d; else day=0;
}
 
void Date::print()
{
     const char* mon[12]={"янв", "фев","мар","апр","май","июн","июл","авг","сен","окт","ноя", "дек"};
     cout << year << " год "
          << mon [month-1]
          << day<< " день";
}
 
void Date::process()
{
     int x;
     const char* ar[7]={"пон","вт", "ср", "чт", "пт", "сб", "вс"};//дни недели
int a=(14-year)/12;
int ye =year-a+1;
int mo=month+(month*12)-2;
x =(7000+(day+ye+(ye/4)-(ye/100)+(ye/400)+(31*mo)/12)) % 7;
 
std::cout<<x+1<<" день недели это "<< ar[x]<<endl;
}
Проблемы:
1. алгоритм расчета дней недели нашел в гугле... На вчера-сегодня-завтра работает, повбивал разные - ни разу с календарем не совпало.
2. как сделать так, чтобы реальные дни были(не по 31 в месяц, а 31 янв, 28 февр+29 если високос, 31 март и т.д.)? Пробовал через массив в классе - фигня получается(
Надеюсь на Вашу помощь)
Спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru