Професионална програма
Loading...
+ Нов въпрос
MilushT avatar MilushT 1 Точки

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

Тагове:
0
C++ Programming
niagara avatar niagara 22 Точки
Best Answer

Решението ти няма да работи при отрицателно число, където anystring[0] ще бъде "-" (минус).

1
MilushT avatar MilushT 1 Точки

Много ти благодаря! Преправих го и за отрицателни числа и получих 100/100.

ОБАЧЕ според мен това е некоректно или поне подвеждащо зададено условие на задачата. Казано е "that reads two strings, which contain either valid integers, or only letters" Т.е аз както го чета се казва, че стринговете съдържат или валидни цели числа или само букви - никъде не се казва нищо за знаци. Още повече, че "intergers" е в множественно число. Т.е. ако един string съдържа "integerS" това се чете (поне аз така го чета) като отделните цифри да са integers, а не като целия string да е integer. Виж ако едни string съдържа едни integer тогава може би, би ми хрумнало, че може да става дума и за отрицателно число.

0
georgi.stef.georgiev avatar georgi.stef.georgiev 921 Точки

Обикновено, когато се каже 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, за да може да пробвате различни интерпретации.

Поздрави,

Жоро

0
sevcan.mehmedd avatar sevcan.mehmedd 1 Точки

Може ли да пуснеш и кода който е за 100/100?

 

0