• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

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
Код:
#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;
}
Если можно решите через класс
 
K

Kilin

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

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";
}

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!