res2001: Спасибо, что стараешься мне помочь. Но ты не знаешь ответ на вопрос похоже как и я. И решить эту проблему тоже не можешь. Можем поразбираться вместе, если тебе не в лом и тебе интересно. Давай пройдемся по тому что ты написал. Про то что в IEEE754 есть не только мантисса знаю, поэтому и уточняю что именно в мантиссе интересует искажение или его отсутствие, потому что оно чревато потерей риса а задача стоит посчитать с точностью до зернышка. Соответственно, если поплыла мантисса то это уже не решение (не с точностью до зернышка). Вариант (~1.8*10^308) не походит с него я начал, но потом понял, что это ошибка, т.к. Страуструп говорит, что кол-во такое большое зерен, что типа double не хватит. А это он имел ввиду то, что не получиться хранить там такое большое число не потеряв не одного значащего разряда. Прочти еще раз упражнение 9, если что. Насчет fixed думаю именно то, что нужно Сайт это т(www.cplusplus.com) по этому вопросу читал еще до того как ты предложил. Потому как если выводить в экспоненте не видно все декады числа альтернативы такому выводу(fixed) я не вижу. 15 значащих цифр, если это касается типа double, а не его вывода неизменны (это то, что гарантируется IEEE754: грубо говоря). Экспериментировал я уже достаточно, что бы прийти к последнему выводу, что написал в шапке. Если тебе будет не лень тоже что-то сделать в этом направлении и понять суть проблемы, а не писать отписки, то поймешь о чем я. Тут нужен какой-нибудь программист-олимпиадник. Они такие вещи знают. Но видимо на тостере не сидят.
AtomKrieg: Если вам лень читать, то и не пишите ничего. Буду ждать совета от того кто осилит 20 строчек текста. А ваши советы мне в принципе не нужны. Ничего полезного вы не говорите, а только отвлекаете. Поищите вопросы в одну строку это соответствует вашему уровню мозговых способностей.
Ринат Велиахмедов: Спасибо, но нет. Я же написал "максимальное значение мантиссы без потери знаков(младшие декады)". Я уже сам нашел ответ. Это numeric_limits::digits10, правда оказалось, что это не поможет. Подробнее напишу в шапку.
res2001: Ответ какой-то странный. Прочитайте внимательно текст обоих упражнений и увидите double во втором. Решил применить double в первом упражнении чтобы обобщить для простоты. Проблема не в этом. Вопрос в конце и вполне конкретен: "какое максимальное значение мантиссы без потери знаков(младшие декады) можно задать для типа double и можно ли его узнать стандартными средствами библиотеки?" По остальному ваши советы мне грубо говоря не нужны.
Даниил Демидко: Как не приглашенный дилетант - подтверждаю QtCreator очень даже подходит для консольных приложений, все просто, интуитивно понятно. Сам в нем гонял учебные примеры из учебник, компилятор реально был VC9. И самое удобное, что можно прикрутить несколько компиляторов и смотреть разницу при компиляции.
teugen: В итоге получается, что с исходным вопросом “Задуманное число меньше X”, если его не менять и включить 100 в возможный выбор числа, а не брать от 1 до 99 , работать в семь итерации при варианте 100 не будет никак, а только в восемь. Поэтому склоняюсь к тому, что в тексте вопроса неправильный перевод на русский и предполагалось, что интервал будет от 1 до 99. Либо второй вариант такой, что вопрос (“Задуманное число меньше X”) можно видоизменять и тогда вариант такой как у вас получился в третий раз (финальный). Я лично считаю, что все таки ошибка переводчика или Бьерн неточно написал и ожидалась, что интервал будет от 1 до 99. Хотя возможен и второй вариант.
teugen: Я написал свой вариант. Он работает 100%. Долго тестировал. Сверху в вопросе дописал. А ваш к сожалению на варианте загаданного числа 100 не работает. Говорит 99. Но сам подход интересен.
Я написал свой вариант. Он работает 100%. Долго тестировал. Сверху в вопросе дописал. А ваш к сожалению на варианте загаданного числа 100 не работает. Говорит 99. Но сам подход интересен.
teugen: Есть просто у меня подозрение, что программа должна работать без первого вопроса. Т.е. сама за семь итераций определять число только по второму вопросу. Но при таком подходе к работающему варианту не пришел.
teugen: Тут вопрос стоит так. Два вопроса или один?(первый про равенство, второй про меньше) Какое ваше мнение? Может уже и в матрице. Как ты проверишь обратное?
Так вы считаете должны быть два вопроса или один? Мой вариант с двумя вопросами правильный? Про двоичный поиск почитаю, знаком только поверхностно. Рекурсивно думаю в данном случае нет смысла, ведь на каждой итерации опять задается вопрос. Упражнение для совсем зеленых: дается в первых главах, когда потенциальный студент только начинает
знакомится с языком. Как мне кажется, должен быть более простой вариант решения пока без сложных понятий. В главах до упражнения не давалось понятие двоичного поиска или алгоритмы его реализации из стандартной библиотеки. Переносы строк и пробелы в данном случае мелочи (мое мнение). Что 8 проходов цикла знаю. В 7 не всегда укладывается в моем варианте реализации. Поэтому и сделал 8. Можно решение задачи от вас посмотреть, где все хорошо? Или кроме расстановки пробелов и новых строк там ничего не будет отличаться?
Ну совсем без взаимодействия с пользователем не получится исходя из формулировки задачи. Вы имеете в виду не задавать первый вопрос? Если так, то да я тоже думал об этом. Но реализовать не получилось. У вас есть вариант реализации?
Работает. Но есть подозрение, что я не понял Бьерна. Например операторы < и <= мне не пригодились, а они указаны в подсказке. Есть еще подозрение, что программа должна работать без первого вопроса. Т.е. сама за семь итераций определять число только по второму вопросу. Но при таком подходе к работающему варианту не пришел.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.