Нахождение следующего дня

Тема в разделе "C/C++/C#", создана пользователем ALDon, 26 ноя 2010.

Статус темы:
Закрыта.
  1. ALDon

    ALDon Гость

    Нужно дополнить прогу, задачка такая, Нужно написать прогу , которая добавляет день введенной дате и выводит его в указанном формате(если GENERAL то выводит не изменяя, а если EN вставляет вместо "." такой символ "/")Если введено не корректное дата выводит "Impossible".Примеры:
    Ввод
    6 // количество дат которые мы будем ввести
    29.1.2009 GENERAL
    31.12.2009 EN
    24.11.-2009 EN
    29.02.2010 GENERAL
    29.02.2008 GENERAL
    29.02.1900 GENERAL
    Вывод
    30.01.2009
    01/01/2010
    Impossible
    Impossible
    01.03.2008
    Impossible

    Этот код рабочий но надо дополнить его т.е ставить условие високосного года и если месяц или день ввелся не так 02 а так 2, то прога должна выводить с нулем т.е так 02
    Код (Text):
    #include <iostream>
    #include <string>
    using namespace std;
    struct year{
    int a;
    int b;
    int c;
    };
    int main () {
    year *a=new year[100];
    int n;
    cin>>n;
    char d;
    string w;
    for(int i=0;i<n;i++){
    cin>>a[i].a>>d>>a[i].b>>d>>a[i].c>>w;  
    if(a[i].a==31 && a[i].b!=12 && !(a[i].a==31 && a[i].b==4) && !(a[i].a==31 && a[i].b==6) && !(a[i].a==31 && a[i].b==9) && !(a[i].a==31 && a[i].b==11) && !(a[i].a==30 && a[i].b==2) && !(a[i].a==31 && a[i].b==2)||a[i].a==30 && a[i].b==4||a[i].a==30 && a[i].b==6||a[i].a==30 && a[i].b==9||a[i].a==30 && a[i].b==11 && w[0]=='G')
    cout<<"1"<<d<<a[i].b+1<<d<<a[i].c<<endl;
    else if(a[i].a==31 && a[i].b==12 && w[0]=='G' )
    cout<<"1"<<d<<"1"<<d<<a[i].c+1<<endl;
    else if(a[i].a>=1 && a[i].a<31 && a[i].b>=1 && a[i].b<=12 &&w [0]=='G' && a[i].c>0 )
    cout<<a[i].a+1<<d<<a[i].b<<d<<a[i].c<<endl;    
    else if(a[i].a==31 && a[i].b!=12 && !(a[i].a==31 && a[i].b==4) && !(a[i].a==31 && a[i].b==6) && !(a[i].a==31 && a[i].b==9) && !(a[i].a==31 && a[i].b==11) && !(a[i].a==30 && a[i].b==2) && !(a[i].a==31 && a[i].b==2)||a[i].a==30 && a[i].b==4||a[i].a==30 && a[i].b==6||a[i].a==30 && a[i].b==9||a[i].a==30 && a[i].b==11||a[i].a==29 && a[i].b==2 && w[0]=='E')
    cout<<"1"<<"/"<<a[i].b+1<<"/"<<a[i].c<<endl;
    else if(a[i].a==31 && a[i].b==12 && w[0]=='E')
    cout<<"1"<<"/"<<"1"<<"/"<<a[i].c+1<<endl;
    else if(a[i].a>=1 && a[i].a<31 && a[i].b>=1 && a[i].b<=12 && w[0]=='E')
    cout<<a[i].a+1<<"/"<<a[i].b<<"/"<<a[i].c<<endl;
    else if(a[i].a<1||a[i].b<1||a[i].b>12||a[i].a>31||a[i].a==31 && a[i].b==4||a[i].a==31 && a[i].b==6||a[i].a==31 && a[i].b==9||a[i].a==31 && a[i].b==11||a[i].a==30 && a[i].b==2||a[i].a==31 && a[i].b==2 || a[i].c<0)
    cout<<"Impossible"<<endl;}

    return 0;
    }
    Если можно решите через класс
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Либо я что-то недопонимаю, но что это значит:
    Это как???
     
  3. ALDon

    ALDon Гость

    Поясню , EN - английский формат даты т.е с символом "/" напр: 02/02/2010, а GENERAL обычный формат даты напр: 02.02.02
     
  4. Kilin

    Kilin Гость

    Aldon, здесь все просто ,для високосного года добавь такое условие
    Код (Text):
    a[i].a==29 && a[i].b==2 && a[i].c%4==0 && a[i].c%100!=0 || a[i].c%400==0
    а для нуля такое

    Код (Text):
    if (a[i].h1<10)
    {
    cout <<"0";
    }
     
  5. ALDon

    ALDon Гость

    Я знаю что надо добавить такие условие но у меня не получается добавить их( точнее добавить високосный год), помогите плиз а!!!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей