![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
DedMazai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
Вечер добрый )
Не могли бы вы подсказать как сделать, чтобы цикл:
читал только чётные строки, и как сделать, чтобы он подсчитал в них кол-во символов? |
|||
|
||||
triclosan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 2 Всего: 12 |
TStringList это точно не по стандарту си++, вы видимо разделом ошиблись
|
|||
|
||||
DedMazai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
||||
|
||||
triclosan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 2 Всего: 12 |
||||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
DedMazai, это по стандарту билдера.
![]() тык ![]() Text.Length() ? Добавлено через 1 минуту и 37 секунд
![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
DedMazai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
Данный цикл, сейчас проверяет в подключённом файле, наличие цифр. Мне надо тоже самое, только чтобы делал он это в чётных строках. и считал сколько в них символов. Добавлено через 3 минуты и 50 секунд
хах, собственно тема не похожая, а таже ![]() ![]() ![]() Правда он отправился спать, а я вот продолжаю работу над практикой )) |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
DedMazai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
спасибо, нашёл другой способ реализации задания
![]() |
|||
|
||||
hsilgos |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: 1 Всего: 2 |
Так быстрее:
![]() |
||||
|
|||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
||||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
zim22, если ты не понимаешь математику, это твои проблемы
|
|||
|
||||
zim22 |
|
||||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
не соглашусь. код должен быть написан как можно понятней. кому как понятней - это уже другой вопрос. все нюансы оформления кода должны быть записаны в "стандартах кодирования". это один из этих случаев. в противном случае программисты будут проверять чётность двадцатью-пятью способами и это затруднит понимание/сопровождение кода. способ 1:
... способ 25:
Это сообщение отредактировал(а) zim22 - 9.7.2009, 22:29 |
||||
|
|||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
zim22, ты написал бред
есть два типа людей, те которые понимают системы счисления, и те которые их не понимают. в данном случае надо было получить четность числа. известно что у числа в двоичном представлении младший разряд определяет его четность соответственно наложение маски выделяющей младший разряд числа позволяет получить число кодирующее четность исходного числа, 0 для нечетных и 1 для четных также известно что оператор if в С\С++ сравнивает численное значение предиката в скобках с нулем, значит достаточно написать ( i&1 ) для программиста это естественный и логичный путь программист не знающий систем счисления конечно тоже программист, но еще его называют быдлокодером конечно тут можно извинить программистов-самоучек не имеющих технического образования, но нормальный программист должен это знать. Добавлено через 53 секунды и да, наложение маски само собой быстрее деления |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
А Вы уверены, что в результативном (асм) коде будет деление, а не наложение маски ?
Да но с лету применять двоичные операции (сейчас уже) большому кругу ЯВУ-программистов не требуется. ![]() ![]() ага, особенно питоновцам и тому подобным ![]()
при условии, что это проходят (а не просто пробегают) по образовательной программе. Это сообщение отредактировал(а) mes - 9.7.2009, 23:59 |
||||
|
|||||
Данкинг |
|
||||||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Ну так я то же самое ведь написал. ![]() -------------------- There's nothing left but silent epitaphs. |
||||||
|
|||||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
||||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
слушаю и повинуюсь. ваши слова для меня - истина в последней инстанции. ну почему же, хорошие книжки. например эта: "Алгоритмические трюки для программистов". это ж так просто, возьмём к примеру функцию подсчета единичных битов из этой книги: (стр.78)
тру хакеры должны писать только так, я вас понял. ![]() |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
zim22, ниче что получить младший разряд числа, и посчитать число ненулевых разрядов в числе - это разные задачи?
|
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
кстати вариант %2 тоже не очень наглядный, гораздо лучше, имхо, завести функцию типа bool isOdd() ![]() P.S. (в частности для GoldFinch) слово "наглядно" в моем употреблении значит, не чтоб было понятно другим программистам (для них можно и комментарий поставить если требуется), а то что код легко подается модификации и сопровождению. ![]() P.S.S. естественно замечание насчет наглядности не относится к "100-строчным" программам. ![]() Это сообщение отредактировал(а) mes - 10.7.2009, 15:27 |
|||
|
||||
DedMazai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
Блин, ### вы тут развели
![]() Вопрос. Почему в
у меня всегда насчитывает на 3 символа больше, чем у меня есть в файле? Это сообщение отредактировал(а) DedMazai - 10.7.2009, 23:07 |
|||
|
||||
hsilgos |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: 1 Всего: 2 |
"Непосвященных" в проект не берем.
А что питоновцу делать в коде на С++ ? О_о
То же самое - по логике. Но не каждый оптимизатор оптимизирует это до "наложения маски".
Это серъезная оптимизация, может применяться в особо чувствительных к производительности местах. К тому же её можно оформить как inline функцию и использовать в любом месте. И "тру хакеры" тут нипричем. |
||||||||||
|
|||||||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Этой фразой я хотел подчеркнуть что не каждому программисту нужно знание двоичной системы, а так как Cpp позволяет программить как и на Си-уровне, так и на более высоком уровне, то есть очень большой ряд Cpp-программистов, сродных по целям задач к питоновцам, т.е тем кому низкоуровневые знания нужны лишь как общая теория, и не находят применения на практике. ![]() Добавлено через 3 минуты и 30 секунд ага, и уже в ней спокойно, если вдруг компилятор не справится ( ![]() Добавлено через 5 минут и 3 секунды
И что это за символы ? приведите пример что в файле, и что считывается. |
|||
|
||||
DedMazai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
например "otvet"
он выдаёт, что в файле не 5 символов, а 8... |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Хотелось бы добавить, что именно операция &1 в принципе сама по себе не очень сложная и действительно трудно поверить, что программисту она может представлять трудность,
однако такой подход это шаг в сторону низко-уровнего программирования, и хотя этот шаг безболезненный, но как говорится "где шаг, там и два" - то легко переусердствовать на мнимой оптимизации, затруднив этим его поддержку. P.S. для ассемблерщиков использование &1 в крови, и ot %2 их естественно подташнивает поначалу, пока не поймут, что оптимизатор справится не хуже. (говорю на собственном опыте хотя и не ассемблерщик - привычка пришла из прошлой жизни ![]() (ну а если опция оптимизации не включена, значит проект и не нуждается в оптимизации ) Вообщем вот такое имхо. Добавлено @ 23:58 перевод строки уже два символа ("\r\n") и вероятно есть пробел еще. Для проверки выведите два раза считанную строку, все что будет между ними и есть Ваши символы. Это сообщение отредактировал(а) mes - 11.7.2009, 00:01 |
|||
|
||||
hsilgos |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: 1 Всего: 2 |
Ну, с этим я согласен. Низкоуровневую реализацию нужно оборачивать. Да и вообще, я сторонник того, чтобы на компилятор возлагать "рутинную" работу. Но и явную пессимизацию я не делаю. ![]() Добавлено через 1 минуту и 36 секунд DedMazai, Случайно кодировка в файле не utf-8 ? |
|||
|
||||
DedMazai |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
Нет, не utf-8
Не совсем разобрался, что мне сделать надо ![]()
Возможно ли записать чтение этой строки так? При этом всёравно на 1 символ больше выводит.. |
||||||
|
|||||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
операция И - это не низкоуровневая реализация, а обычная математика =\
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не обычная, а двоичная . Я считаю, что если операции проводятся над двоичными или шестандцатиричными числами, то вполне уместно использовать двоичные операции, так как они накладываются без изменения логики. А вот для десятиричной системы лучше использовать десятиричные операции. Как я уже говорил выше операция &1 "случайно"по логике подходит для 10ричной сс. Но если чуть развернуть задание, например надо вначале вывести все четные числа, потом кратные трем, потом 4м - то сразу видно что &1 будет выглядеть обособлено. А зачем лишний раз тратить свое внимание на то, что может сделать компилятор ? Добавлено @ 13:49 тут тоже в 28 строке обычная математика: http://forum.vingrad.ru/index.php?showtopi...t&p=1916322 ну как, с ходу понятно, какое условие зашифровано в этой строке ? ![]() однако мне совесть не позволила оставить такой подход и пришлось написать по нормальному : http://forum.vingrad.ru/index.php?showtopi...t&p=1916495 логика работы примера стала более свободная и понятная, а операции деления в случае возможной замены на битовые операции компилятор сделает сам. Я думаю этот пример как раз показывает преимущества второго подхода над первым. ![]() Это сообщение отредактировал(а) mes - 11.7.2009, 15:24 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Для начала проверить файл на отсутствие в нем лишних символов, таких как пробел или перевод строки. можно посмотреть его реальный размер и убедиться, что файл со строчкой otvet занимает 5 байт. Вот тут Вы получили длину строки, а потом зачем то инкрементируете это значение. зачем ? покажите полностью участок кода по подсчету длины считанной последовательности. |
|||
|
||||
DedMazai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
Блин, действительно, глупость сделал ![]()
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
в файле содержится слово "otvet" из 5 букв ? размер файла 5 байт ? переменная i после приведенного выше кода содержит 8 ?
при двойном выводе на экран печатает "otvetotvet" ? так ? Это сообщение отредактировал(а) mes - 11.7.2009, 17:12 |
|||
|
||||
DedMazai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
Нет, приведённый выше код работает правильно )
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
тогда в чем вопрос ?! Добавлено @ 17:45 а понял.. Виной всему то Ваше ++i ?! ![]() Добавлено через 4 минуты и 8 секунд не забудьте тогда тему как решенную пометить ![]() Это сообщение отредактировал(а) mes - 11.7.2009, 17:45 |
|||
|
||||
DedMazai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Лучше новую создайте, во первых по правилам один вопрос - одна тема, во вторых тут очень много флуда. Всем будет проще в новой, вместо того чтоб разбираться в этой, что и к чему относится. Кстати просьба, при следующем вопросе не надо партизанить, как в этой теме. Старайтесь описать проблему, так чтоб не приходилось собирать обрывки по теме. ![]() Это сообщение отредактировал(а) mes - 11.7.2009, 17:58 |
|||
|
||||
DedMazai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.7.2009 Где: Лобня Репутация: нет Всего: нет |
...
Добавлено через 4 минуты и 16 секунд спасибо всем ) Это сообщение отредактировал(а) DedMazai - 11.7.2009, 18:10 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |