| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++]Найти первую цифру дробной части |
| Автор: nitrak 8.1.2009, 16:51 |
| Дано положительное вещественное число А. Найдите первую цифру дробной части. |
| Автор: Фантом 8.1.2009, 17:20 |
| floor((A-floor(A))*10) Надо подключить math.h. |
| Автор: nitrak 8.1.2009, 17:41 |
| Спасибо, помогло!! а что делает функция floor?? |
| Автор: Dmi3ev 8.1.2009, 19:10 | ||
округляет |
| Автор: Фантом 8.1.2009, 19:32 | ||
Пожалуйста. Возвращает наибольшее целое число (с типом double) , меньшее или равное аргументу (который тоже double). |
| Автор: nitrak 8.1.2009, 20:21 | ||
| Все! я доделал!)) еще раз спасибо!!
|
| Автор: Dmi3ev 9.1.2009, 01:17 | ||||
не совсем
|
| Автор: Фантом 9.1.2009, 04:07 | ||
| Вы меня, надеюсь, извините, но, вообще говоря, оба варианта, кхм... не вполне удачны. 1) Заголовочные файлы лучше писать не в кавычках, а в <> - в противном случае компилятор их, скорее всего, не найдет. 2) Зачем нужна строка #include "stdafx.h" ? 3) Функция main() в соответствии со стандартом языка должна возвращать int. На такой заголовок любой приличный компилятор выругается. 4) Вариант #include "iostream.h" (равно как и #include<iostream.h>) приказал долго жить уже, если не ошибаюсь, 11 лет назад, в 1998 году. В сочетании же с using namespace std; это вообще какая-то смесь французского с нижегородским. Правильно #include<iostream>. 5) Число по условию было положительным, а "защита от дурака" в условие задачи не входила. 6) Функция int abs(int) определена не в math.h, а в stdlib.h 7) Приведением типов лучше вообще никогда не пользоваться (по крайней мере, без сильнейшей необходимости). Ибо это частый источник ошибок, а заодно и неудобный для компилятора вариант. Понятно, что в такой "программе" это мелочи, но все же... 8) system("pause") - а откуда известно, что shell знает, что такое "pause"? 9) Ну и главное - на закуску. Это"скриншот" работы второго варианта программы:
Вопрос - почему не "2"? Подсказка: задачка п.9 чем-то очень похожа на п.5. |
| Автор: Dmi3ev 9.1.2009, 17:43 | ||||||
Фантом, у меня просто в данный момент нет компилятора и ближайшую неделю не будет, но попытаюсь ответить.
согласен! я пишу нормально, но потом вставил из проги nitrak-а и то не полностью))) чтобы ему понятнее было)))
известно! это уже придирки... вот такой вариант можно
пойдёт? можно проверить строку на то, что она полностью из цифр, а так... |
| Автор: Фантом 9.1.2009, 18:56 | ||||||
Ну, зачем мне к чему-то придираться?.. Просто так действительно делать нехорошо - не стоит закладываться на особенности конкретных компиляторов и конкретных операционных систем (как в данном случае). Если уж nitrak учит C++, пусть лучше сразу учится правильно.
Можно. Он лучше - в том смысле, что введенная после точки цифра и то, что получится в ответе, всегда будут совпадать. Но, строго говоря, это тоже не решение задачки из п.9. Ответ там, собственно, простой: числа 324.2 и 324.1999999... равны друг другу. И с точки зрения математики (всегда), и с точки зрения машинного представления (зачастую). Соответственно, вопрос о том, какой будет первая цифра дробной части у такого числа, просто не имеет однозначного ответа. Если предполагается, что исходная задача допускает однозначное решение, то это означает, что подобные данные в нее вводить нельзя. |
| Автор: Dmi3ev 9.1.2009, 19:07 | ||||||
сталкивался, знаю.
я думаю, что это даже самый простой способ решения задачи...
тогда можно использовать getch, sleep, cin, чтобы приостановить программу и увидеть ее результаты... http://forum.vingrad.ru/forum/topic-212986.html вот как раз эту тему поднимал... решение задачки из п.9 |
| Автор: Фантом 9.1.2009, 19:21 | ||||||||
Конечно, насчет "скорее всего" я погорячился - наиболее распространенные современные компиляторы найдут, однако нарваться на то, что компилятор это не поймет, до сих пор достаточно реально (хотя в действующем стандарте языка эта норма есть). С другой стороны, в предполагаемом стандарте C++09 ее вроде бы собрались отменить (ради ликвидации потенциального источника ошибок). Во всяком случае, лучше так не делать - спокойнее будет.
Есть, кто же спорит. Но преобразованиями типов все равно пользоваться нехорошо - конструктор типа оно в любом случае вызовет. Добавлено через 7 минут и 10 секунд
А, эту тему я не видел. Кстати, в дополнение к ней: есть еще одно решение - использовать языки, предназначенные для такой деятельности. Современные варианты Фортрана и Ады это все умеют "от рождения", причем более естественным (на мой взгляд) путем, чем C++. |
| Автор: Dmi3ev 9.1.2009, 19:41 | ||
да, повезло автору, все по полочкам разобрали...
тоже выход |