Предмет: Информатика, автор: EN0Tymnik

Программисты на питоне или c++ ХЕЛП!

пытался решить но выходит не верно (набираю только 3 из 10 балов) жду вашй помощи задача ниже даю 60б

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

С тех пор Петя считает дни до заветного праздника и ждёт с нетерпением момента, когда он получит подарок и сможет заняться любимым делом.

Помогите Пете посчитать, сколько дней осталось ждать Нового года.



Пример:



Ввод:

30.10.1977

Ответ:

63


restIess: datetime нельзя использовать?
EN0Tymnik: не знаю , можно попробовать.
restIess: Там есть метод timedelta, он разность дат находит, просто его используй
EN0Tymnik: ок, спасибо.)
stglupa: задачка нацелена на то, чтобы научить человека работать с алгоритмизацией, научить более уверенно прогать и в таких случаях частенько бывает полезно прописать лишний велосипед, поэтому в таких академических задачах использовать всякие встроенные фишки не советую

Ответы

Автор ответа: stglupa
1

#include <iostream>

#include <vector>

using namespace std;

bool isLeap(int y){

   return (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0));

}

signed main(){

   string s, cur;

   cin >> s;

   vector<int> d;

   for(int i = 0; i < s.length(); i++){

       if(s[i] == '.'){

           d.push_back(stoi(cur));

           cur.clear();

       }

       else

           cur += s[i];

   }

   d.push_back(stoi(cur));

   int k = d[0];

   d[1]--;

   while(d[1] > 0){

       if(d[1] == 2) k += 28 + isLeap(d[2]);

       else if((d[1] < 8 && d[1] % 2 == 1) || (d[1] >= 8 && d[1] % 2 == 0)) k += 31;

       else k += 30;

       d[1]--;

   }

   cout << (365 + isLeap(d[2])) - k + 1;

}


EN0Tymnik: супер,спасибо!
stglupa: обращайся
Похожие вопросы
Предмет: Технология, автор: 76maks76
Предмет: Алгебра, автор: mykytapidgornyp8zmvt