Я занимался вопросами программирования на этом сайте под названием Kattis.Вот ссылка на вопрос, который я делал: https://open.kattis.com/problems/datum
Пока я пытался решить эту проблему, я обнаружил что-то очень, очень, очень странное.
Прежде чем я начну, здесьдва кода:
Первый:
#include <iostream>
#include <ctime>
#include <string>
using namespace std;
int main()
{
//a = day, b = month
string days[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
struct tm time;
cin >> time.tm_mday >> time.tm_mon;
time.tm_year = 2009-1900;
time.tm_mon--;
mktime(&time);
cout << days[time.tm_wday] << endl;
return 0;
}
Второй:
#include <iostream>
#include <ctime>
#include <string>
using namespace std;
int main() {
//a = day, b = month
string days[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
tm time = {};
cin >> time.tm_mday >> time.tm_mon;
time.tm_year = 2009-1900;
time.tm_mon--;
mktime(&time);
cout << days[time.tm_wday] << endl;
return 0;
}
Это ТОЧНЫЙ ЖЕ код, кроме единственной разницы в этих двух кодах:
struct tm time; // first code
против
tm time = {}; // second code
СЕЙЧАС, это то, что я нашелочень запутанноПервый код и второй код дают точно такой же ответ на моей консоли.Я проверил тип результата (days [time.tm_wday]), выполнив typeid (days [time.tm_wday]). Name (), и оба ответа кажутся абсолютно одинаковыми.
Однако, при отправке на веб-сайт Kattis, он принимает только второй и не принимает первый.
Теперь, кто-нибудь может сказать мне, что мне здесь не хватает?Почему он принимает только одно против другого?Большое спасибо!
РЕДАКТИРОВАТЬ: Некоторая информация о Kattis: Возникнет вопрос, где вам придется решать ее с помощью программирования.Затем он проверяет ваш ответ с их.Если ваша программа выдает одинаковые ответы, она «принимает» ваше решение.Если он отличается, то это не так.
Например, предположим, что задача состоит в том, чтобы вычислить площадь квадрата.Это дает пару примеров со значениями.
ex) Случай 1: (вход: 5 Выход: 25).
Если ваша консоль выдает 25 при вводе 5, то она «принимает» ваше решение.Если он выводит случайное число, например, 10, то он не принимает.
Дело в том, что моя программа выводит точно такие же значения:
Вывод первого кода: четверг.Вывод второго кода: четверг и т. Д. Однако только один считается «правильным».