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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.