Автор Тема: Посчитать количество дней от одной даты до другой  (Прочитано 8413 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Do0m

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Надо написать программу которая считает количество дней от одной даты до другой!!! ::)


Называйте тему грамотно!
Исправлено.
« Последнее редактирование: 09 Июня 2011, 16:55:43 от Dlacier »

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Help Help Help !!!!!!!!!!!!!!!!!!!!!!!!!
« Ответ #1 : 09 Июня 2011, 15:07:32 »
По старому стилю, по новому стилю, внутри года, между годами (с учётом високосных), на каком языке.
Что уже сделано?

Оффлайн PROSTDJ

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Запитання: Визначити клас ДАТА – інформація про день, місяць, рік.
Реалізувати операцію віднімання двох дат – кількість днів між ними,
а також додавання та віднімання певної кількості днів для одержання нової дати
*/
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;

struct Tdmy{ // структура
       long d,m,y; //  число місяць рік
       void dmy_pp(int count=1){ // дата плюс плюс
           int i=0;
           do{
            i++;           
            d++;
            switch (m){
                   case 1: if (d>31) {d=1; m++;} break;
                   case 2: if (d> ((y % 4 == 0) ? 29 : 28)  ) {d=1; m++;} break;
                   case 3: if (d>31) {d=1; m++;} break;
                   case 4: if (d>30) {d=1; m++;} break;
                   case 5: if (d>31) {d=1; m++;} break;
                   case 6: if (d>30) {d=1; m++;} break;
                   case 7: if (d>31) {d=1; m++;} break;
                   case 8: if (d>31) {d=1; m++;} break;
                   case 9: if (d>30) {d=1; m++;} break;
                   case 10: if (d>31){d=1; m++;} break;
                   case 11: if (d>30){d=1; m++;} break;
                   case 12: if (d>31){d=1; m=1; y++;} break;
                   // перевіряємо корректність
            }   
            }while (i!=count);
       }
       void dmy_mm(int count=1){ // дата мінус мінус
           int i=0;
           do{
            i++;       
            d--;
            if (d==0){
                     
              switch (m){
                     case 1: y--; m=12; d=31; break;
                     case 2: m--; d=31; break;
                     case 3: m--; d=(y % 4 == 0) ? 29 : 28; break;
                     case 4: m--; d=31; break;
                     case 5: m--; d=30; break;
                     case 6: m--; d=31; break;
                     case 7: m--; d=30; break;
                     case 8: m--; d=31; break;
                     case 9: m--; d=31; break;
                     case 10: m--; d=30; break;
                     case 11: m--; d=31; break;
                     case 12: m--; d=30; break;
                 }   
            }
           }while (i!=count);
       }
       
       void show_date(){ // функція виводить дату
            cout<<"The date is (d.m.y) : "<<d<<"."<<m<<"."<<y<<endl;           
       }
       void enter_date(){ // функція вводить дату
            cout<<"Enter DATE "<<endl;
            cout<<" D : ";
            cin>>d;
            cout<<" M : ";
            cin>>m; 
            cout<<" Y : ";
            cin>>y;
            cout<<endl;           
                     
       }             
};
int test(Tdmy p1,Tdmy p2){
    // функція приймає дві дати і виводить такі результати:
    // кто раньше: 1 - первый; 2 - второй; 0 - одинаковые
     if (p1.y>p2.y){
        return 2;
     }     
     if (p1.y<p2.y){
        return 1;
     }     
     // если года одинаковые... продолжаем наш тест ))
     // ща месяца
     if (p1.m>p2.m){
        return 2;
     }     
     if (p1.m<p2.m){
        return 1;
     }     
     // теперь дни
     if (p1.d>p2.d){
        return 2;
     }     
     if (p1.d<p2.d){
        return 1;
     }     
     // если ничего не подошло - тогда даты одинаковые     
     return 0;
}
long DateIntervalCount(Tdmy p1,Tdmy p2){ // різниця дат (кількість днів між датами)
     // функція підраховує кількість днів між датами
    int result=test(p1,p2); // дати рівні
   
    if ( result == 0 ) return 0; // p1=p2
    if ( result == 2 ) { //p1>p2
       // міняємо місцями дати
          Tdmy temp=p1;
          p1=p2;
          p2=temp;   
    }
    long interval=0; // часовий інтервал = 0
     while (test(p1,p2)!=0)
     {// інкрементуємо дату до тих пір, поки дати не зрівняються
        interval++;
        p1.dmy_pp();
     }
           
     return interval;
}
int main(){
    Tdmy var1; // створили структуру
    Tdmy var2; // створили структуру   
   
    do{
       system("cls");
        cout<<"enter 1: \n";
        var1.enter_date(); // ввели дату 1
        cout<<"enter 2: \n";
        var2.enter_date();// ввели дату 2
       
        var1.show_date();   
        var2.show_date();   
        cout<<endl;
        cout<<" Date interval is "<< DateIntervalCount(var1,var2)<<endl;// вивели інтервал в днях
        cout<<endl;
       
        cout<<"\n -> DATE1+5 AND DATE2-5\n";
        var1. dmy_pp(5);
        var2. dmy_mm(5);
        var1.show_date();    // вивели дату1
        var2.show_date();        //         2       
        cout<<endl<<"Press ESC to exit..."<<endl;
    } while (getch()!=27); // якщо ESC - то виходимо
    system("PAUSE");   
    return 0;
}

 

Вычислить приближенную площадь одной арки синусоиды на С++

Автор Oblivion

Ответов: 11
Просмотров: 10077
Последний ответ 16 Июня 2010, 15:25:30
от Oblivion
Программа, численно посчитать первую и вторую производную функции

Автор serj-07

Ответов: 6
Просмотров: 10552
Последний ответ 18 Мая 2010, 20:58:48
от serj-07
Курсовик Borland C++, матрица, найти количество нулевых элементов

Автор ivanets

Ответов: 0
Просмотров: 6831
Последний ответ 20 Декабря 2010, 00:16:01
от ivanets
Курсовик по С++, найти количество нулевых элементов в матрице

Автор bul04ka

Ответов: 1
Просмотров: 5204
Последний ответ 23 Декабря 2010, 09:56:21
от testtest
как в маткаде посчитать сумму в массиве

Автор SE

Ответов: 3
Просмотров: 9938
Последний ответ 05 Ноября 2010, 19:10:02
от Dlacier