C++ advanced Task 1 - TryParse
Не мога да разбера защо Judge ми дава 20/100 на тази задача. Направих си нов solution на Visual studios copy/paste -нах main-а от условието на задачата. Направих си TryParse.h и го inlcude-нах в Main-a. И това работи - то тази функция има 4 възможни комбинации 2 int - сумира, 2x(1 int +1 string = error), 2 strings=error. При input както е дефиниран в условието се получават очакваните отговори. Освен това и очевидно TryParse.h работи поне във Visual Studios, защото не получам някаква грешка. От това, което виждам в judge не съм сигурен какво става - дали самата функция не работи или има проблем с файла TryParse.h. Ето я и самата функция:
#include <string>
#include <cctype>
bool tryParse(std::string anystring, int & a)
{
bool result = false;
if (isdigit(anystring[0]))
{
a = std::stoi(anystring);
result = true;
}
return result;
}
Много ти благодаря! Преправих го и за отрицателни числа и получих 100/100.
ОБАЧЕ според мен това е некоректно или поне подвеждащо зададено условие на задачата. Казано е "that reads two strings, which contain either valid integers, or only letters" Т.е аз както го чета се казва, че стринговете съдържат или валидни цели числа или само букви - никъде не се казва нищо за знаци. Още повече, че "intergers" е в множественно число. Т.е. ако един string съдържа "integerS" това се чете (поне аз така го чета) като отделните цифри да са integers, а не като целия string да е integer. Виж ако едни string съдържа едни integer тогава може би, би ми хрумнало, че може да става дума и за отрицателно число.
Обикновено, когато се каже integer, се има предвид число без десетична (не-цяла) част, но това не изключва отрицателни числа (вече ако беше natural numbers щеше да е друго) - https://en.wikipedia.org/wiki/Integer. Така че -42 е "valid integer".
Ако можеше да са само цифри или букви, в условието най-вероятно щеше да бъде "[...] either only digits or only letters", нямаше да бъде "either only valid integers, or only letters".
А множественото число е защото са 2 стринга. Съгласен съм, че можеше да е малко по-добре казано "[...] that reads two strings, each of which is either a valid integer, or contains only letters" - ще го обновя това в условието.
Иначе да, възможно е да има двусмислени неща, но за да бъдат условията кратки трябва някои детайли да се спестяват - иначе задачите стават с огромни описания ако трябва да се конкретизира всичко до степен, в която няма как да стане двусмислица, както ще бъде на изпита (в който случай пък е лесно да пропуснеш част от условието).
Няма как, ще има такива ситуации, затова има форум, има и judge система с immediate feedback, за да може да пробвате различни интерпретации.
Поздрави,
Жоро