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

  • Автор темы ALDon
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

ALDon

#1
Нужно дополнить прогу, задачка такая, Нужно написать прогу , которая добавляет день введенной дате и выводит его в указанном формате(если 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
Код:
#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;
}
Если можно решите через класс
 

lazybiz

Well-known member
03.11.2010
1 339
0
#2
Либо я что-то недопонимаю, но что это значит:
добавляет день введенной дате и выводит его в указанном формате(если GENERAL то выводит не изменяя, а если EN вставляет вместо "." такой символ "/")
Это как???
 
K

Kilin

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

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

ALDon

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

Код:
if (a[i].h1<10)
{
cout <<"0";
}
Я знаю что надо добавить такие условие но у меня не получается добавить их( точнее добавить високосный год), помогите плиз а!!!
 
Статус
Закрыто для дальнейших ответов.