![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
В приведенном условии встречаются слова "целое число". Скорее, преобразовывать каждый символ отдельно в число не надо было. А просто взять и написать стандартный алгоритм. Вот такой я строгий и злой ![]() ![]() |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
То, что мой код "падает" на отрицательных числах - всего навсего небольшой недочёт, который исправляется элементарно(уверен: ты и сам это понимаешь). Ты так на этом зацикливаешься, что создаётся впечатление, как будто попытка исправить этот недочёт способна убить алгоритм. В любом случае: перебрать строку - проще и дешевле, чем выполнять арифметические операции над числом(полученным из этой же строки) для получения того же результата.
Это сообщение отредактировал(а) diadiavova - 6.2.2009, 20:33 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Проще и дешевле??? С каких это пор преобразование строки в число (для каждого символа) стало проще и дешевле деления на 10 - одной процессорной инструкции? ![]() ![]() ![]()
Это большой недочет. Попытка исправления его подвинет алгортм на один шаг в сторону спагетти. Уверен, ты понимаешь сколько стоит выловить такой "недочет" в системе средних размеров. Так же уверен, что ты понимаешь что на самом деле для введения хоть какой-нибудь валидации ввода тебе придется обработать минимум 3 крайних случая вручную, и при этом повторить функционал стандартного Int32.Parse(). Хотя, после фразы что операция со строками дешевле деления - я уже не уверен ![]() Это сообщение отредактировал(а) PashaPash - 6.2.2009, 20:50 |
|||
|
||||
zaksys |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 31.5.2008 Где: Красноярск Репутация: нет Всего: нет |
Я сначала думал перебрать преобразованное число по цифрам, и их сравнивать. Просто не знал как выделить из полученного числа цифры, чтоб потом просто проверить четные они не четные.
Это сообщение отредактировал(а) zaksys - 6.2.2009, 21:07 |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
zaksys, ну тогда, вариант PashaPash для тебя.
PashaPash, Сомневаюсь, что деление, с нахождением остатка - более дешёвая процедура, чем парсинг строки из одного символа. Хотя: спорить об этом умозрительно нет никакого смысла, а проверять на практике, я думаю не хочется ни тебе ни мне.
Ты хочешь сказать, что проверка наличия минуса в строке - настолько дорогое удовольствие, что слабой машине с этой сверзадачей не справиться? Проверка введённых данных к теме имеет косвенное отношение, и если её вводить, то и расклад другой будет. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Деление с нахождением остатка - ровно одна инструкция процессора. Парсинг строки число в C# - это сложная операция, у четом текущей локали, кучи левых проверок типа на всякие там leading/traling space. Сложнее на пару порядков - возьми отладчик и убедись.
Я имею в виду что сам поиск такой ошибки будет достаточно трудоемкой операцией. Если даже 5 строчек не работают точно по однострочной спеке, то как можно доверить тебе проект? ![]() |
|||
|
||||
diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Я имею в виду не поиск ошибки, а то, что код надо просто чуть-чуть подправить.
На сколько я понимаю, я к тебе на работу не устраиваюсь ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||
|
|||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
diadiavova, да просто пятница, пиво закончилось, а на форму тишина....
|
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Ты на форум VB.Net зайди, тогда узнаешь, что такое тишина.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 1 Всего: 372 |
||||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Я так понимаю, что неодобрительную оценку я получил именно за это утверждение. В связи с этим, я немного подправил алгоритм(от преобразования строки в число отказался вовсе и заменил его свитчкейсом), решил проблему отрицательных чисел. Программа содержит текстовый файл, состоящий из 100000 строк, на каждой из которых записано целое число в интервале от -1000000 до 1000000 . Файл считывается построчно, и каждая строка передаётся на обработку первому алгоритму(моему), после чего аналогичные действия производятся со вторым алгоритмом. Время, затраченное на обработку выводится на экран. Файл сгенерирован рэндомно, метод при помощи которого это было сделано, представлен. Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
zaksys |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 31.5.2008 Где: Красноярск Репутация: нет Всего: нет |
А как решить проблему отрицательных чисел?(Чтоб их можно было безболезнено считывать, также как и положительные).
Это сообщение отредактировал(а) THandle - 8.2.2009, 18:14 |
||||
|
|||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Отмотай на мой пост на прошлой странице, там готовый код. Добавлено через 6 минут и 18 секунд Не за это утверждение, а за общую кривизну решения детской задачи. |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
А по поводу результатов теста будут комментарии?
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
diadiavova, замечательный тест, вот только студии под рукой нет. А так - почему ты передаешь string buf? В условии ж сказано - целое число. Поменяй - получишь обратный результат
![]() И зачем ручная работа с энумератором? В чем вообще цель? Доказать что можно проверять на четность свитчем? Твой вариант препод завернет с фразой "а почему вы в число не преобразовываете как я вам показывал" ![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |