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

Создать класс CDateAddDays - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ функция pow для int http://www.cyberforum.ru/cpp-beginners/thread833074.html
собственно говоря проблема такая - мне нужно возвести целое число в целую степень. Например я пишу так double f(int x,int y) { double res = pow(x,y); return res; } студия говорит "существует более одного экземпляра перегруженной функции pow соответствующего списку аргументов" В чем может быть проблема? Насколько я понял преобразование из int в double возможно, обратное - понятно...
C++ Двусвязный список (расчет и сравнение сумм первой и второй половины списка, разбиение на 2 подсписка относительно заданного элемента) Помогите пожалуйста составить программу которая должна обрабатывать двухсвязный список, содержащий вещественные числа Дополнительные функции: 1) расчет и сравнение сумм первой и второй половины списка; 2) разбиение на 2 подсписка относительно заданного элемента http://www.cyberforum.ru/cpp-beginners/thread833065.html
ругается непонятный символ проценты. C++
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1;
Вывести сумму товара запросом C++
Нужно вывести сколько получил прибыли за последний месяц с определенного товара. но выводит построчно а не в одной строке, как сделать чтоб была сумма этого товара?
C++ Рекурсивная функция C++ http://www.cyberforum.ru/cpp-beginners/thread833057.html
Сосчитать f(y)=3y+5, yk - входное данное.
C++ обработка матрицы взялся за работёнку В ходе выполнения работы необходимо разработать программу, осуществляющую ввод и обработку квадратных матриц по заданной формуле. C*2*(A-B) как применяется к матрице? что такое А, В, С? подробнее

Показать сообщение отдельно
MVM
Сообщений: n/a
09.04.2013, 22:00     Создать класс CDateAddDays
Пожалуйста, помогите доделать задачку!
Найти дату, которая наступит по прошествии указанного количества дней после заданной даты. Например, через три дня после 29.12.2003 будет 01.01.2004.
Имя класса: CDateAddDays
Исходное данное: строка в формате dd.mm.yyyy
Имя метода для установки исходного данного: SetDateString
Имена полей, в которых хранятся исходные данные: m_year, m_month, m_day
Результат: строка в формате dd.mm.yyyy
Прототип метода, который будет выполнять действие: void AddDays(int);
Имя метода для взятия результата: GetDateString
Имена объектов: date1, date2

вот что получилось у меня:
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
stdafx.h 
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>//DateAddDays.h
 
class CDateAddDays
{
   int m_year; //год
   int m_month; //месяц
   int m_day; //день
   int m_month_days[12]; 
   int m_day1;
   long dc; 
   
 public:
 
    CDateAddDays(); //конструктор
   ~CDateAddDays(); //деструктор
 
   void GetDateAddDays(char *buf); //вся строка
    
   int GetY(); //функции-члены "Взять"
   int GetM();
   int GetD();
   void GetDate2(char *buf);
   long Date2DaysFromYear1(int a,int b,int e);
   long Days2Date2();
   void Days2Date(int *m_year,int *m_month,int *m_day,long dc);
   int SetY(int); //функции-члены "Установить"
   int SetM(int);
   int SetD(int);
   int SetDate2(char *buf);
   int SetDateAddDays(int AY, int AM, int AD); //установить дату
   int SetDateAddDays(char *buf); 
   
 
   int SetDateString(); //метод для установки исходного данного
};
 
stdafx.cpp
 
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<io.h>
#include <math.h>
 
      
    CDateAddDays::CDateAddDays() //Конструктор
    {   m_year=1;
        m_month=1;
        m_day=1;
        m_day1=1;
                                //Инициализация массива  
        
        m_month_days[0]=31;
        m_month_days[1]=28;
        m_month_days[2]=31;
        m_month_days[3]=30;
        m_month_days[4]=31;
        m_month_days[5]=30;
        m_month_days[6]=30;
        m_month_days[7]=31;
        m_month_days[8]=30;
        m_month_days[9]=31;
        m_month_days[10]=30;
        m_month_days[11]=31;
    }
 
    
    CDateAddDays::~CDateAddDays() //Деструктор
    {}
 
 
                                 //Метод, берет всю дату в виде строки
    void CDateAddDays::GetDateAddDays(char *buf)
    {
     printf(buf, "%02d.%02d.%04d", m_day, m_month, m_year);
    }
 
    int CDateAddDays::GetD()       //номер дня
    { return m_day; }
    int CDateAddDays::GetM()      //номер месяца
    { return m_month; }
    int CDateAddDays::GetY()      //номер года
    { return m_year; }
 
               //Метод установки сразу всей даты по номеру года, месяца и дня
    int CDateAddDays::SetDateAddDays(int AY,int AM,int AD)
    {
                 return
                    SetY(AY)&&
                    SetM(AM)&&
                    SetD(AD);
    }
 
             //Метод установки всей даты из строки
    int CDateAddDays::SetDateAddDays(char *buf)
    {
                 int y,m,d;
                 sscanf_s(buf,"%d.%d.%d",&d,&m,&y);
     return SetDateAddDays(y,m,d);
    }
 
           //Метод утановки дня по его номеру
     int CDateAddDays::SetD(int AD)
                {
     if(AD>=1&&AD<=m_month_days[m_month-1])
         { m_day=AD;
                         return 1;
                     }
                 else
                         return 0;
    }
 
          //Метод установки месяца по его номеру
    int CDateAddDays::SetM(int AM)
                {
     if(AM>=1&&AM<=12)
                     { m_month=AM;
                         return 1;
                     }
                 else
                         return 0;
                 }
 
        //Метод установки года по его номеру
    int CDateAddDays::SetY(int AY)
                {
     if(AY>=1&&AY<=9999)
                     {  m_year=AY; //условие, является ли год високосным
                     
                                  //установка кол-ва дней в феврале
                if(m_year%4==0&&m_year%100!=0||m_year%400==0)
                                 m_month_days[1]=29;    //високосный
                            else
                                 m_month_days[1]=28;    //нормальный
                                     return 1;
                }
     else
        return 0;
    }
    
             //метод подсчета кол-ва дней от начала 01/01/00001 года до
             //заданной даты
             
  long CDateAddDays:: Date2DaysFromYear1 (int a,int b,int e)
{ 
  int m = (b - 14) / 12;
  return ((1461 * (a + 4800 + m)) / 4 + (367 * (b - 2 - 12 * m)) / 12 - (3 * ((a + 4900 + m) / 100)) / 4 + e - 32075) - 1757585;
 
}
  void CDateAddDays::GetDate2(char *buf) //метод  берет ввод кол-ва дней
    {
     printf(buf, "%d", m_day1);
    }
   int CDateAddDays::SetDate2(char *buf) //метод  устанавливает ввод кол-ва дней
 {     
      int m_day1;
       scanf_s("%d", &m_day1);
     return SetDate2(buf);
 }
 
 
 long CDateAddDays:: Days2Date2() //метод прибавляет дни 
 { long dc;
   dc=Date2DaysFromYear1(m_year, m_month, m_day);
   dc=dc+m_day1;
   return dc;
  } 
 
  
        /* по заданному номеру дня, если нумерация начиналась с 01.01.0001,
   определяет год, месяц и день
   dc - количество дней,
   0<=dc<=3652059
     (верхний предел соответствует дате 31.12.9999)
*/
void CDateAddDays:: Days2Date(int *m_year, int *m_month, int *m_day, long dc)
{
  long century;
  long year,month,days;
 
  days=dc+306;
  century=floor(( 4.0 * days -  1) /  146097.0);
  days   =floor(floor (4.0 * days - 1 - 146097.0 * century)/4.0);
  year   =floor(( 4 * days +  3) /  1461.0);
  days   =4l * days +  3 -  1461l * year;
  days   =floor((days +  4.0) /  4.0);
 
  month  =floor(( 5.0 * days -  3.0) /  153.0);
  days   =5 * days -  3 -  153 * month;
  days   =floor((days +  5.0) /  5.0);
 
  if(month < 10)
    month +=3;
  else
  {
    month -=9;
    if(year++ == 99)
    {
      year = 0;
      century++;
    }
  }
  *m_year=(int)(century*100+year);
  *m_month=(int)month;
  *m_day=(int)days;
} 
 
laba22.cpp
 
#include "stdafx.h"
 
#include<cstdlib>
#include<iostream>
#include<conio.h>
 
int _tmain(int argc, _TCHAR* argv[])
{CDateAddDays DateAddDays1;      //вызов конструктора
    
     char buf[32];        //задает исходную дату, которую будет выдавать
 
     while(1)
     {
        printf("\n vvedite daty ('q' to exit) [dd.mm.yyyy]: ");
                    scanf_s("%s",buf);
                    if(!strcmp(buf,"q")) break;
            //в объект DateAddDays1 устанавливает дату из строки в перем.buf
            
            if(!DateAddDays1.SetDateAddDays(buf))
                {
                             printf("vveli nevernuyu daty \n");
                             continue;     //снова ввести дату
                }
     
                       
            printf("\n vvedite kol-vo dney  ('q' to exit): ");
                    scanf_s("%s", buf);
                    if(!strcmp(buf,"q")) break; 
                    if(DateAddDays1.SetDate2(buf))
                {
                             printf(" vvely neverno \n");
                             continue;     
                }
                    
        
 
    DateAddDays1.Days2Date2();
    DateAddDays1.GetDateAddDays(buf);
    printf("novaya data: %s\n ", buf);
}
    getch();
         
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru