Иван
Дум1 и дум2 старше меня вроде. А мне 28
Знаю, ща покажу показания, что я их играю
Arutemu
люди не умеют гуглить просто смирись
Всё-таки, я бы не стал дизинформировать человека шутками. Да, это весело, но ведь есть некоторый шанс, что персона, увидев ответ - моментально будет следовать совету. Так же это само по себе сбивает с толку. Здесь нужна аккуратность. (А можно пустить человека в пучины ада, чтобы он получил горький опыт, возненанавидел человечество и стал "самостоятельным". Этакий процесс посвящения. Или нет 🧐)
Robert
В работаете кем?
Временно никем. Ищу работу, параллельно изучаю, собственно. Работал системным администратором, преподавателем по пяти предметам, текущая подработка репетитором по информатике, наверное, не считается.
Gravity
"329"+1 надо получить 330 как реализовать в с++?
Gravity
как ?
Шурок
как ?
Что как?
Gravity
в число
Vyacheslav
как ?
что как?
Gravity
как перевести "329" в число
Vyacheslav
как перевести "329" в число
https://stackoverflow.com/questions/7663709/how-can-i-convert-a-stdstring-to-int
Шурок
@Pel_MeN_y
Шурок
Gravity
а без готовой функции можно самому как то реализовать?
Vyacheslav
а без готовой функции можно самому как то реализовать?
можно через расшифровку по индексам таблицы кодировочной
Gravity
тема наз расшифровка?
Vyacheslav
тема наз расшифровка?
тема называется кодировка только это изврат чутка. полезно - узнаешь как кодировочные таблицы выглядят вредно - никогда в жизни больше так делать все равно не будешь
Gravity
спасибо)
Vyacheslav
спасибо)
рекомендую просто почитать про кодировку символов в системах, а решить задачу через функцию из std::string
Шурок
Robert
Можео написать миллион ифов кстати
Посимвольно переводить?
Vyacheslav
Можео написать миллион ифов кстати
ну... миллион то не получится, символов в таблице меньше )))
Шурок
Типо if(str== "1") number = 1 else If(str =="2") number = 2
Vyacheslav
Типо if(str== "1") number = 1 else If(str =="2") number = 2
ну если так то да, можно и миллион написать 😂
Vyacheslav
Так цифр то 10 всего
а чисел то бесконечность )
Шурок
Так цифр то 10 всего
Разбитие строки для слабаков
Шурок
Циклы тоже
Борисов
На leetcode написать функцию перевода строки в число - одна из первых задач
Vladislav
Можно массив создать тогда и по нему пройтись сверяя каждый символ )
Борисов
Есть некий сишный вариант ) enum SymbolType { SPACE, SIGN, DIGIT, OTHER }; inline bool isSpaceSymbol(char symbol) { return ( ' ' == symbol ); } inline bool isSignSymbol(char symbol) { return ( '+' == symbol || '-' == symbol ); } inline bool isDigitSymbol(char symbol) { return ( '0' == symbol || '1' == symbol || '2' == symbol || '3' == symbol || '4' == symbol || '5' == symbol || '6' == symbol || '7' == symbol || '8' == symbol || '9' == symbol ); } inline int getDigit(char symbol) { if ( '0' == symbol ) { return 0; } if ( '1' == symbol ) { return 1; } if ( '2' == symbol ) { return 2; } if ( '3' == symbol ) { return 3; } if ( '4' == symbol ) { return 4; } if ( '5' == symbol ) { return 5; } if ( '6' == symbol ) { return 6; } if ( '7' == symbol ) { return 7; } if ( '8' == symbol ) { return 8; } if ( '9' == symbol ) { return 9; } return 0; } inline enum SymbolType getSymbolType(char symbol) { if ( isSpaceSymbol(symbol) ) { return SPACE; } if ( isSignSymbol (symbol) ) { return SIGN; } if ( isDigitSymbol(symbol) ) { return DIGIT; } return OTHER; } int myAtoi(char* str) { const size_t nSizeString = strlen(str); long long int nRes = 0; char nSign = 1; bool bIsStarted = false; for(size_t i=0; i<nSizeString; ++i) { switch ( getSymbolType(str[i]) ) { case SPACE: if ( bIsStarted ) { i=nSizeString; continue; } break; case SIGN: if ( bIsStarted ) { i=nSizeString; continue; } bIsStarted = true; nSign = ( str[i] == '+' ) ? 1 : -1; break; case DIGIT: bIsStarted = true; nRes = nRes * 10 + getDigit(str[i]); long long int nTmp = ( nSign == 1 ) ? 2147483647 : 2147483648; if ( nRes >= nTmp ) { nRes = nTmp; i=nSizeString; } break; default: goto error; } } error: return ( nRes * nSign ); }
Алексей
Для меня их бесплатность - важный фактор (как для начинающего, можно понять, а будет ли вообще тебе это интересно) Потом, конечно, когда определишься, можно и вложиться)
Они довольно хорошие. Правда. Я учил SQL. Еле до предпоследнего урока дошел. Надо заканчивать теперь времени не хватает.
Шурок
Есть некий сишный вариант ) enum SymbolType { SPACE, SIGN, DIGIT, OTHER }; inline bool isSpaceSymbol(char symbol) { return ( ' ' == symbol ); } inline bool isSignSymbol(char symbol) { return ( '+' == symbol || '-' == symbol ); } inline bool isDigitSymbol(char symbol) { return ( '0' == symbol || '1' == symbol || '2' == symbol || '3' == symbol || '4' == symbol || '5' == symbol || '6' == symbol || '7' == symbol || '8' == symbol || '9' == symbol ); } inline int getDigit(char symbol) { if ( '0' == symbol ) { return 0; } if ( '1' == symbol ) { return 1; } if ( '2' == symbol ) { return 2; } if ( '3' == symbol ) { return 3; } if ( '4' == symbol ) { return 4; } if ( '5' == symbol ) { return 5; } if ( '6' == symbol ) { return 6; } if ( '7' == symbol ) { return 7; } if ( '8' == symbol ) { return 8; } if ( '9' == symbol ) { return 9; } return 0; } inline enum SymbolType getSymbolType(char symbol) { if ( isSpaceSymbol(symbol) ) { return SPACE; } if ( isSignSymbol (symbol) ) { return SIGN; } if ( isDigitSymbol(symbol) ) { return DIGIT; } return OTHER; } int myAtoi(char* str) { const size_t nSizeString = strlen(str); long long int nRes = 0; char nSign = 1; bool bIsStarted = false; for(size_t i=0; i<nSizeString; ++i) { switch ( getSymbolType(str[i]) ) { case SPACE: if ( bIsStarted ) { i=nSizeString; continue; } break; case SIGN: if ( bIsStarted ) { i=nSizeString; continue; } bIsStarted = true; nSign = ( str[i] == '+' ) ? 1 : -1; break; case DIGIT: bIsStarted = true; nRes = nRes * 10 + getDigit(str[i]); long long int nTmp = ( nSign == 1 ) ? 2147483647 : 2147483648; if ( nRes >= nTmp ) { nRes = nTmp; i=nSizeString; } break; default: goto error; } } error: return ( nRes * nSign ); }
Тут цикл есть. Не защитано
Robert
Есть некий сишный вариант ) enum SymbolType { SPACE, SIGN, DIGIT, OTHER }; inline bool isSpaceSymbol(char symbol) { return ( ' ' == symbol ); } inline bool isSignSymbol(char symbol) { return ( '+' == symbol || '-' == symbol ); } inline bool isDigitSymbol(char symbol) { return ( '0' == symbol || '1' == symbol || '2' == symbol || '3' == symbol || '4' == symbol || '5' == symbol || '6' == symbol || '7' == symbol || '8' == symbol || '9' == symbol ); } inline int getDigit(char symbol) { if ( '0' == symbol ) { return 0; } if ( '1' == symbol ) { return 1; } if ( '2' == symbol ) { return 2; } if ( '3' == symbol ) { return 3; } if ( '4' == symbol ) { return 4; } if ( '5' == symbol ) { return 5; } if ( '6' == symbol ) { return 6; } if ( '7' == symbol ) { return 7; } if ( '8' == symbol ) { return 8; } if ( '9' == symbol ) { return 9; } return 0; } inline enum SymbolType getSymbolType(char symbol) { if ( isSpaceSymbol(symbol) ) { return SPACE; } if ( isSignSymbol (symbol) ) { return SIGN; } if ( isDigitSymbol(symbol) ) { return DIGIT; } return OTHER; } int myAtoi(char* str) { const size_t nSizeString = strlen(str); long long int nRes = 0; char nSign = 1; bool bIsStarted = false; for(size_t i=0; i<nSizeString; ++i) { switch ( getSymbolType(str[i]) ) { case SPACE: if ( bIsStarted ) { i=nSizeString; continue; } break; case SIGN: if ( bIsStarted ) { i=nSizeString; continue; } bIsStarted = true; nSign = ( str[i] == '+' ) ? 1 : -1; break; case DIGIT: bIsStarted = true; nRes = nRes * 10 + getDigit(str[i]); long long int nTmp = ( nSign == 1 ) ? 2147483647 : 2147483648; if ( nRes >= nTmp ) { nRes = nTmp; i=nSizeString; } break; default: goto error; } } error: return ( nRes * nSign ); }
Это под капотом atoi, что ли?
Борисов
Борисов
Алексей
На каком языке разрабатываете, наверное так корректней)
Сейчас FoxPro, SQL, но надеюсь на С++. Сегодня питерские ребята отказали. Я уж и так все свои резюме закрыл на время. А тут палец созкользнул и я ткнул. Но они отказали. Работа мечты для меня разрабатывают игры, я надеюсь с искусственным интеллектом. Короче все что надо для релокации.
Борисов
Тут цикл есть. Не защитано
Там же надо обработать каждый символ из строки
Vyacheslav
Можно массив создать тогда и по нему пройтись сверяя каждый символ )
да стоит только стринг на чары разобрать и чар итерируется элементарно инкрементом от '0' до '9' и можно выдернуть коды, например или и правда написать 10 ифов ) а вообще, просто пишешь символы цифер в массив и возвращаешь итератор цикла, внутри которого сравниваешь то что в строке с тем что в контрольком массиве
Шурок
Подскажете какой?
Почему мне твой ник кажется знакомый
Алексей
Временно никем. Ищу работу, параллельно изучаю, собственно. Работал системным администратором, преподавателем по пяти предметам, текущая подработка репетитором по информатике, наверное, не считается.
Я тоже работал преподавателем, а сисадмином всю жизнь работал. Но после того как свозил студентов на worldskills заболел программированием. Сейчас работаю программистом по базам данных: FoxPro, SQL
Борисов
А, если с миллионом if )) Тогда да, не подходит )
Robert
Классно, однако. "Закрой глаза на гугл и делай по новой то, что есть в виде готового решения" – это без сарказма интересная история.
Vladislav
Подскажете какой?
Курс от Заула Трегулова на Udemy (там и для новичков и есть и продвинутая Java)
Борисов
Классно, однако. "Закрой глаза на гугл и делай по новой то, что есть в виде готового решения" – это без сарказма интересная история.
Это больше для прохождения алгоритмической секции на собеседованиях, на мой взгляд, нужно )
Алексей
На leetcode написать функцию перевода строки в число - одна из первых задач
На Codewars сегодня пытался решить обратную. Никак. Пишу char(1) а он выдает ошибку
Алексей
Есть некий сишный вариант ) enum SymbolType { SPACE, SIGN, DIGIT, OTHER }; inline bool isSpaceSymbol(char symbol) { return ( ' ' == symbol ); } inline bool isSignSymbol(char symbol) { return ( '+' == symbol || '-' == symbol ); } inline bool isDigitSymbol(char symbol) { return ( '0' == symbol || '1' == symbol || '2' == symbol || '3' == symbol || '4' == symbol || '5' == symbol || '6' == symbol || '7' == symbol || '8' == symbol || '9' == symbol ); } inline int getDigit(char symbol) { if ( '0' == symbol ) { return 0; } if ( '1' == symbol ) { return 1; } if ( '2' == symbol ) { return 2; } if ( '3' == symbol ) { return 3; } if ( '4' == symbol ) { return 4; } if ( '5' == symbol ) { return 5; } if ( '6' == symbol ) { return 6; } if ( '7' == symbol ) { return 7; } if ( '8' == symbol ) { return 8; } if ( '9' == symbol ) { return 9; } return 0; } inline enum SymbolType getSymbolType(char symbol) { if ( isSpaceSymbol(symbol) ) { return SPACE; } if ( isSignSymbol (symbol) ) { return SIGN; } if ( isDigitSymbol(symbol) ) { return DIGIT; } return OTHER; } int myAtoi(char* str) { const size_t nSizeString = strlen(str); long long int nRes = 0; char nSign = 1; bool bIsStarted = false; for(size_t i=0; i<nSizeString; ++i) { switch ( getSymbolType(str[i]) ) { case SPACE: if ( bIsStarted ) { i=nSizeString; continue; } break; case SIGN: if ( bIsStarted ) { i=nSizeString; continue; } bIsStarted = true; nSign = ( str[i] == '+' ) ? 1 : -1; break; case DIGIT: bIsStarted = true; nRes = nRes * 10 + getDigit(str[i]); long long int nTmp = ( nSign == 1 ) ? 2147483647 : 2147483648; if ( nRes >= nTmp ) { nRes = nTmp; i=nSizeString; } break; default: goto error; } } error: return ( nRes * nSign ); }
Не это длинно
Vladislav
С какого раза ты понимал о чем там речь ?
Ну учитывая что я уже до этого имел небольшой опыт работы с C# и совсем чуть чуть джава, то с первого Может новичкам иногда придётся пересматривать какой то урок (или уроки) Но он суперски обьясняет
Алексей
Я понимаю, что с математикой вы на ты?
Я не очень доволен. Но в кандидатской оптимизационные модели есть))
Борисов
Не это длинно
Там условия по задаче, что в строке могут быть пробелы, знак '-', либо не цифры
Борисов
Сделаешь короче - покажешь, посмотрим )
Алексей
Олег
Народ, откуда скачать редактор пдф фришный на пэка?
Борисов
А если '0'+1?
Мне кажется, char '0' преобразуется в 0x30
Vyacheslav
Мне кажется, char '0' преобразуется в 0x30
а разве не зависит это от того чему присваивать результат?
Борисов
Это скользкий путь такие вещи складывать )
Vyacheslav
Это скользкий путь такие вещи складывать )
конечно но чар один хрен итерируется плюсадином )
Алексей
Мне кажется, char '0' преобразуется в 0x30
Я попробую. У нас был хороший модуль но я что-то не нашел. Обратно вернее фокус как складывать числа записанные в чар нашел а это нет
Vyacheslav
Это скользкий путь такие вещи складывать )
мой первый код написаный наполовину по книжке прибавлял к чару 32, чтобы регистр латинской буквы сменить
Борисов
Скорее 0x30 прибавлял А может и нет )
Vyacheslav
Скорее 0x30 прибавлял А может и нет )
там хер проссышь чо прибавляется в итоге, когда складываешь двухбайтный инт с однобайтным чаром😂 но по таблице кодировки таким образом можно перемещаться - это факт
Олег
Libre Office.
Спасибо
Vyacheslav
Да, можно добавить 32 и получится в нижнем регистре
А если от нижнего отнять - получится верхний )) Книга 2005 года Стандарт плюсов в ней - ещё старше Даже про стринги ни слова там не было
Борисов
там хер проссышь чо прибавляется в итоге, когда складываешь двухбайтный инт с однобайтным чаром😂 но по таблице кодировки таким образом можно перемещаться - это факт
https://ravesli.com/urok-55-neyavnoe-preobrazovanie-tipov-dannyh/ "Обработка арифметических выражений - если операндом является целое число меньше (по размеру/диапазону) типа int, то оно подвергается интегральному расширению в int или в unsigned int. - если операнды разных типов данных, то компилятор вычисляет операнд с наивысшим приоритетом и неявно конвертирует тип другого операнда в такой же тип, как у первого. Приоритет типов операндов: long double (самый высокий); double; float; unsigned long long; long long; unsigned long; long; unsigned int; int (самый низкий)."
Борисов
При складывании char c int, думаю, char будет приведен к типу int
Борисов
То есть, согласно таблице ASCII, char a = '0' это 0x30, значит будет int a = 0x30
Arutemu
Посоветуйте ресурсы по C++, пожалуйста?
Vyacheslav
char a = '4'; int ia = a - '0'; a - '0' is equivalent to ((int)a) - ((int)'0'), which means the ascii values of the characters are subtracted from each other. Since 0 comes directly before 1 in the ascii table (and so on until 9), the difference between the two gives the number that the character a represents