![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - помогите сделать блок-схему |
|
Теория - помогите сделать блок-схему
|
Новый участник Сообщения: 28 |
Блок схемы
|
|
Отправлено: 02:10, 30-11-2013 |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать А ведь предупреждали: не сравнивайте вещественные числа между собой. Нет же, пока САМ не обожжется - должен попробовать. // http://forum.pascalnet.ru/lofiversio...hp/t24610.html ВОТ ПРИМЕР КАК ОБЖИГАЮТСЯ select * from table_name where val=1.7 Значение 1.5 остается как было, значение 1.7 меняется на 1.70000004768372. // http://www.sql.ru/forum/958491/strannyy-kosyak-s-float ГДЕ ТА БЕСКОНЕЧНОСТЬ, КОТОРУЮ ВЫ ТУТ МНЕ ПЫТАЕТЕСЬ ДОКАЗАТЬ? А число 1.7 в двоичной системе имеет бесконечный хвост, который сохранить полностью не представляется возможным. // http://www.sql.ru/forum/958491/strannyy-kosyak-s-float Это, кстати, касается и случая, когда Вы сравниваете вещественные числа, не учитывая точность представления чисел. Посмотрев в отладчике, что числа, вроде как одинаковые, но сравнение срабатывает так, как будто они разные, Вы не задумались бы, что именно в сравнении содержится ошибка. // http://popoff.donetsk.ua/text/work/prg/debug.html У вещественных чисел есть погрешность. Сравнивайте не "равно", а больше/меньше, с учетом этой погрешности. // http://linuxforum.ru/viewtopic.php?id=4076 Не сравнивайте на равенство вещественные числа. // http://www.intuit.ru/studies/courses...?page=2 Уж сколько раз твердили миру: не сравнивайте вещественные числа на равентство. // www.forum.mista.ru/topic.php?id=620586 Не сравнивайте вещественные числа оператором = (равно). Это не проблема Delphi, а свойство их представления. // http://rfpro.ru/?step=search&mode=an...=5&from=110280 |
------- Отправлено: 07:24, 01-12-2013 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата mrcnn:
Цитата mrcnn:
Цитата:
Цитата mrcnn:
Цитата mrcnn:
Цитата mrcnn:
Зачем Вы мне это доказываете? Я об этом давно уже написал в этой теме, поднимите глаза долу на пост #5. Но всё это никак не отменяет того факта, что утверждение Цитата:
|
|||||||
Отправлено: 08:25, 01-12-2013 | #22 |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать ЭВМ оперирует структурами конечного типа. 1/3 не является в компьютере бесконечным. Выше приведен пример с числом 1.7, которое было преобразовано в 1.70000004768372 В 1/3 тоже добавляется в конец "мусор".. Вы проверяете на платформе i386 а на других платформах, например встроенных систем, мобильных устройств и т.п. ваш пример может не сработать. ВАША ПРОГРАММА БЫЛА ПРОВЕРЕНА ЛИШЬ НА ВАШЕМ КОМПЬЮТЕРЕ, но не проверялась на других платформах. Докажите сперва, что ваша программа работает вообще ? Если она на вашем компьютере работает, это не значит, что она правильная. С чего вы решили, что у вас правильный код? Может быть, его и не всякий компилятор скомпилирует? 1/3 вообще в языке C нет, и об этом написано у K&R, что нельзя в программе на языке С писать 1/3, это ошибка. Вы впариваете тут бред и чушь, и еще и спорите, понимая, что не правы.. Ваша программа на языке С ошибочная вообще. Помимо i386 есть еще и платформы ARM, Itanium, а помимо процессоров Intel и AMD есть еще много разных процессоров. Докажите сперва, что ваша программа, которая является как пример, является верной. где ваша выборка и результаты тестирования программы на парке, скажем из тысячи машине? и вообще вы кто такой по жизни, если спорите о простых вещах? Вы не программист вообще, а хз кто.
страница 184 Математический энциклопедический словарь ДИСКРЕТНАЯ МАТЕМАТИКА - область математики, занимающаяся изучением свойств дискретных структур, к-рые возникают как внутри математики, так и в ее приложениях. К числу таких структур могут быть отнесены, напр. конечные группы, конечные графы, а также не-рые математич. модели преобразователей информации, конечные автоматы, машины Тьюринга и т.п. Это примеры структур финитного (конечного) характера. страница 281 Математический энциклопедический словарь КОНЕЧНЫЙ АВТОМАТ - матемтическая модель устройства с конечной памятью, преобразующего дискретную информацию. страница 360 МАШИНА - абстрактное устройство, осуществляющее переработку информации. <...> Возникновение их связано с анализом понятия алгоритма, начавшегося в сер. 30-ч гг. 20 в., с развитием ЭВМ <...> Наибольшее распространение получили М., перерабатывающие дискретную информацию, типичными представителями к-рых являются конечный автомат и Тьюринга машина. страница 597 ТЬЮРИНГА МАШИНА - название, закрепившееся за абстрактными вычислительными машинами некоторого точно охарактеризованного типа. |
------- Отправлено: 09:27, 01-12-2013 | #23 |
Ветеран Сообщения: 2029
|
Профиль | Отправить PM | Цитировать mrcnn, обсуждали уже. Я привел шесть разных примеров, где равенство возможно и даже необходимо. Но потом удалил сообщения, чтобы не разводить флейм. Повторю еще раз: полностью согласен с уважаемым Iska. Перестаньте мыслить категориями 20-тилетнй давности. Воспринимайте "a" и "b" из задачи не как числа, а как объекты, между которыми определено отношение эквивалентности.
А уж что именно это за объекты - неважно. Я приводил пример и с вещественными числами для которых оператор == был переопределен и с матрицами и с вещественными для которых требовалось именно побитовое совпадение и даже с виртуальными машиными в которых такие числа как 1/3 или корень из двух представлены без какой-либо потери точности... Сущность этих объектов не имеет никакого значения для контекста задачи. Конечно, если Вы хотите сказать, что никакие объекты не могут быть эквивалентными.... Тогда Вам на философский форум. Я предлагаю оставить вопрос о, якобы, неправильных условиях задачи, поскольку обсуждение его автору не только не поможет, но, напротив, может создать у него ложное впечатление о том, что команды сравнения вещественных чисел на равенство были включены в архитектуру процессоров идиотами. |
------- Последний раз редактировалось AMDBulldozer, 01-12-2013 в 11:00. Отправлено: 10:47, 01-12-2013 | #24 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать winston07,
В примере №2 у тебя из условия идут 3 стрелочки. Должно быть 2 ("да" и "нет"). Не все пути программы приводят к концу (на выводе заканчиваются стрелки). В принципе примеры №1 и №3 могут пройти по прямой, без ветвлений (т..е. рисовать одним блоком). Но можно предусмотреть деление на ноль. Тогда появятся варианты. (Начало) | / Дано:x,a,b / | нет----------< x!=0? >----да | | | [ Часть1=a+(b/x) ] | | / Часть1 нельзя вычислить / | | | | нет-----< 0<=x? >---------да | | | | / Часть2 нельзя вычислить / [ Часть2=sqrt(a+sqrt(x)) ] | | | | | [ y=(a+lg|b-x|)^2/(Часть1*Часть2) ] | | | | | / Результат: y / | | | ----------------------------------------- | (Конец) Добавлю к общему флуду: Блок-схема предназначения для того, чтобы объяснить ход/особенности алгоритма (не вдаваясь в подробности реализации). Например, я лично рисовал блок-схемы узлов, которые программировал, чтобы объяснить их работу заказчику (при этом обучать его программированию не входило в планы). Блок-схемы надо уметь читать и писать. Для этого нужно решать "тупые" задачки в большом количестве. Ровно как обучение письму начинается с рисований "никому не нужных" закорючек. Кстати, я заметил что компиляторы используют представление кода (3-adress-code) очень похожее на блок-схемы. |
Отправлено: 11:51, 01-12-2013 | #25 |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 13:44, 01-12-2013 | #26 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата mrcnn:
Цитата mrcnn:
Цитата mrcnn:
Цитата mrcnn:
2. «Докажите сперва, что ваша программа работает вообще ?» — если Вам недостаточно исходного кода, могу выложить бинарный файл, но, боюсь, Вас и это не убедит, что «программа работает». 3. Поищите у «не всякого компилятора» параметр, включающий поддержку стандарта ANSI. Цитата mrcnn:
Цитата mrcnn:
Цитата mrcnn:
Цитата:
Цитата mrcnn:
Цитата mrcnn:
Цитата:
|
|||||||||||
Последний раз редактировалось Iska, 01-12-2013 в 14:03. Отправлено: 13:58, 01-12-2013 | #27 |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать Цитата:
В итоге пользователи начинают обращаться в тех поддержку из-за того, что у них программа не работает. Потому что программист не предусмотрел некоторые ситуации. Поэтому, для ПО постоянно выпускают обновления, заделывающие ошибки программистов. Цитата:
Цитата Iska:
В лоб числа с плавающей точкой не сравнивают из-за погрешности. И в архитектуре процессоров заложена определенная погрешность и точность. И инженеры, проектирующие процессоры, могут ошибаться. |
|||
------- Отправлено: 14:29, 01-12-2013 | #28 |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать Iska
В начале речь шла не о равенстве 1/3 и 1/3 а о сравнении a и b, а вы начали исходить из сравнения a и b при их равенстве сведя в итоге и a и b к 1/3. Конкретно, смотрите изображение IMG_20131130_121057.jpg топик стартера о блок схеме. Вы перевели рассуждение к ситуации, когда a и b аксиоматически являются одинаковы (и равными 1/3), что является неверным для IMG_20131130_121057.jpg Таким образом, вы подменили начальный тезис, сузив его. Причем Tau_0 прокомментировал изображение IMG_20131130_121057.jpg , а не вашу программу. Последовательность событий: 1. 02:10, Вчера IMG_20131130_121057.jpg топик стартера о блок схеме к программе. X = { a / b + 1, если a > b, a + 25, если a = b, (a*b - 2) / a, если a < b; } 2. 05:02, Вчера Tau_0 написал в "См. второй пример на ветвление, если a = b Он совсем не так прост..., ибо никогда в лоб на плавающей точке равенства не будет..." Это замечание является корректным, так как сравнение вещественных чисел будет отличаться от сравнения целочисленных. В лоб сравнивать нельзя, так как в машинном представлении чисел с плавающей точкой есть погрешность. В этой теме: http://www.rsdn.ru/forum/cpp.applied/1187492.flat в сообщении от 24.05.05 14:53 написано, что сравнивать вещественные числа нужно в некой окрестности и приведен код |
------- Отправлено: 15:08, 01-12-2013 | #29 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата mrcnn:
Было сказано: «Для любых X верно Y». Я привёл опровержение, что Y верно отнюдь не для любых X. Но Вы с какого-то перепугу придумали себе и упорно требуете от меня доказательства «Для каждого X не верно Y». Цитата mrcnn:
Первое ключевое слово — «при вычислениях». Второе — «при различных». Но, повторяю вновь: это никак не подтверждает, либо опровергает сделанного утверждения: Цитата:
Цитата mrcnn:
Цитата mrcnn:
|
|||||
Отправлено: 15:33, 01-12-2013 | #30 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Помогите подобрать блок питания | Pavich | Выбор отдельных компонентов компьютера и конфигурации в целом | 1 | 12-08-2013 21:36 | |
Как сделать Блок по ip. | Sharik987 | Microsoft Windows NT/2000/2003 | 20 | 22-02-2013 13:41 | |
Разное - Помогите собрать системный блок | magnus-1 | Прочее железо | 2 | 17-09-2012 22:36 | |
C/C++ - Помогите с блок-схемой | rscream | Программирование и базы данных | 1 | 11-12-2011 23:56 | |
Помогите собрать системный блок | PoPiN | Выбор отдельных компонентов компьютера и конфигурации в целом | 3 | 26-08-2009 15:39 |
|