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

Задачка на высокосный год - C++

Восстановить пароль Регистрация
 
Менчендайзер
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 19
28.06.2012, 21:00     Задачка на высокосный год #1
Дана структура, задающая дату вида:
Struct date {int day;
int month;
int year;};
Пользуясь таким структурным типом, составить программу,
определяющую: дату, которая наcтупит через m дней;
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
#include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;
char* Rus(const char* str);
char str_rus[256];
 
struct dat {int day;
             int month;
             int year;};
int main()
{  
dat date;
int d,y1;   
cout <<Rus(" Введите текущую дату!!! \n");
 
cout << Rus("\n ВВЕДИТЕ ГОД: ");
cin >> date.year;
 
cout<<Rus("\n ВВЕДИТЕ МЕСЯЦ: ");
cin>>date.month;
if (date.month>12) {cout<<Rus("\n НЕ ВЕРЕН МЕСЯЦ: "); return(1);}
 
cout << Rus("\n ВВЕДИТЕ ДЕНЬ МЕСЯЦА: ");
cin >> date.day;
if (date.day>31) {cout<<Rus("\n НЕ ВЕРЕН ДЕНЬ: "); return(1);}
 
cout << Rus("\n ВВЕДИТЕ ДНИ: ");
cin>>d;
 
d=d+date.day;
date.day=0;
 
if (d>=365)
{
y1 = floor((double)(d/365)); 
date.year=date.year+y1;
d=d-(y1*365);
}
 
while (d>28)
{
    if ( (date.month==12) && (d>31) ) 
    {date.month=1; date.year++; d=d-31;}
    
    if ((date.month==2)&&(d>28)) 
    {date.month++; d=d-28;}
    
    if (  ( (date.month==1)||(date.month==3)
        ||(date.month==5)||(date.month==7)||(date.month==8)||(date.month==10) ) &&(d>31))
    {date.month++; d=d-31;}
    
    if (  ( (date.month==4)||(date.month==6)||(date.month==9)||(date.month==11))&&(d>30)) 
    {date.month++; d=d-30;}
}
date.day=d;
cout<<Rus("\n получается ")<<date.day<<" . "<<date.month<<" . "<<date.year<<"\n";
 
return 0;}  
char* Rus(const char* str)
{ AnsiToOem(str, str_rus);
  return str_rus;}
Добавлено через 2 минуты
дело в том ,что когда я выставляю 28.02.2012 и кол-во дней 1 он пишет 1.03.2012, а должно 29.02.2012
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 21:00     Задачка на высокосный год
Посмотрите здесь:

Високосный год C++
C++ високосный год
C++ високосный год
C++ . Введите месяц и день своего рождения. Выясните, какой ближайший год будет для вас счастливым. Год называется счастливым, если остаток от деления сум
C++ считая что год не высокосный и известен день, на который приходится 1 января, подсчитать количество понедельников в году приходящихся на 13-е число
Високосный год C++
C++ Создайте класс «Дата» со свойствами год, високосный год, месяц, день месяца и день недели
Календарь на год C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
28.06.2012, 21:22     Задачка на высокосный год #2
Можешь воспользоваться этим кодом (не обязательно делать из него функцию, можешь вытащить его себе в мейн)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    //проверка на то возможен ли такой день в указанном месяце
    bool DayIsCorrect(int day) const
    {
         static const int daysInMonth[13] =
        {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 
       if ( day > 0 && day <= daysInMonth[ month ] )
          return true;
 
       // Проверка на 29 февраля
       if ( month == 2 && day == 29 && ( year % 400 == 0 || ( year % 4 == 0 && year % 100 != 0 ) ) )
          return true;
 
       return false;//Указан недопустимый день
    }
Менчендайзер
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 19
28.06.2012, 21:28  [ТС]     Задачка на высокосный год #3
Спасибо!!!
Yandex
Объявления
28.06.2012, 21:28     Задачка на высокосный год
Ответ Создать тему
Опции темы

Текущее время: 06:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru