1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
||||||
1 | ||||||
Вывод вещественных переменных15.08.2010, 11:24. Показов 9372. Ответов 13
Метки нет (Все метки)
Здравствуйте.
1. Как вывести вещественные переменные в нормальном виде? Если написать :6:2 например, то если у меня получается 2.1225 - результат не будет точным, а хочется и точно и красиво. Вот написал небольшую прогу, хочется сделать функцию, но не знаю как. А процедура - не очень удобно(мне так кажется)
2. Возможно ли из среды турбо паскаля вставлять сюда код проги или обязательно заново писать?
0
|
15.08.2010, 11:24 | |
Ответы с готовыми решениями:
13
div и mod в вещественных переменных Обмен значениями двух вещественных переменных Поменяйте местами значения вещественных переменных Поменять местами значения вещественных переменных |
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
||||||
15.08.2010, 11:33 | 2 | |||||
Открываете файл .pas в любом блокноте, копируете и вставляете в сообщение.
Добавлено через 2 минуты Во первых, если написать :6:2, то выведет типа х= 2.12 Во вторых нужно самому определять точность, если нужно 10 знаков после запятой, то напишите
Так напишите что должна делать программа в целом и функция в частности.
0
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
15.08.2010, 11:44 [ТС] | 3 |
Сама прога например вычисляет что-нибудь.
функция должна обеспечивать правильный вывод вещественных переменных, т.е. если это 1.123456 то и пишет 1. 123456, а если это 1.123, то 1.123000 пишет без нулей. Желательно, что бы это выглядело так: WriteLn ('x=', <имя функции>(x))
0
|
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
||||||
15.08.2010, 11:53 | 4 | |||||
КОП, Не бывает вещественных чисел таких как вы написали, количество знаков после запятой определяете вы при форматировании вывода, в памяти компьютера числа типа real имеют вид типа
2.123456251444444Е+0001 Например напишите такой код
0
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
15.08.2010, 12:03 [ТС] | 5 |
дело в том, что я не знаю, сколько получится знаков после запятой. Я ,конечно, могу написать WriteLn (x:14:10), но при х=1.5 я получу на экране 1.5000000000, этого я и хочу избежать.
0
|
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
15.08.2010, 12:06 | 6 |
А кто знает? Это же ваша программа, вам и определять точность вывода числа, а программа всегда считает 15-16 для типа real и до 19-20 для более точных типов
0
|
Автор FAQ
1802 / 614 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
|
|
15.08.2010, 12:09 | 7 |
Тогда единственно что приходит в голову. это анализировать числа после запятой. А это тоже задача не простая.
0
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
15.08.2010, 12:13 [ТС] | 8 |
Допустим моя программа выполняет деление. Я ввожу 2 числа и она выдаёт частное. И количество знаков после запятой зависит от данных, которые я введу и будет различным, мне же нужно, что бы если после запятой мало знаков, то не было бы нулей, т.е. мне просто нужно красиво вывести результат.
0
|
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
15.08.2010, 12:35 | 9 |
КОП, А если в результате будет периодическая дробь, например 1/3?
0
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
15.08.2010, 12:47 [ТС] | 10 |
Вот моя прога это и делает (до 9 цифр после запятой)
Мне лишь нужно оформить её под функцию и использовать внутри оператора Write, если это возможно. Если нет, то я сделаю процедуру c параметром, которую буду запускать перед Write и она определит количество цифр после запятой. Пример: x:=1.123; Proced(x); {w станет равным 4, е=3} WriteLN ('x=', x:w:e); Проблема в том, что если мне надо вывести 2 разные переменные (х1, х2), придётся сначала выполнить процедуру для ч1, написать одну половину Write с х1, потом запускать процедуру для х2 и дописывать строку. Добавлено через 3 минуты то выведет 1.333333333 (округлённо) мне достаточно точности в 9 цифр после запятой
0
|
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
||||||
15.08.2010, 13:30 | 11 | |||||
Тогда можно преобразовывать число в строку, брать первые 9 символов и отбросить все ведомые ноли.
Добавлено через 18 минут Вот пример для 9 цифр после запятой с отбрасыванием нолей.
1
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|||||||||||
15.08.2010, 15:03 [ТС] | 12 | ||||||||||
Pupurev спасибо
Я сам ещё посидел и вот написал процедуру для 2х чисел.
0
|
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
|||||||||||
15.08.2010, 15:24 | 13 | ||||||||||
Конечно, только ее результатом будет не число, а строка, как у меня.
Например так.
0
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
15.08.2010, 15:30 [ТС] | 14 |
Спасибо большое.
Как я сам не додумался
0
|
15.08.2010, 15:30 | |
15.08.2010, 15:30 | |
Помогаю со студенческими работами здесь
14
Считывание вещественных переменных до определенного символа Программа которая меняет местами значение вещественных переменных а и в Даны значения вещественных переменных а b и с: найти среди них наибольшее и наименьше значение Добавить вывод на экран адресов всех переменных, а в конец – значений всех переменных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |