Как вывести дробь паскаль

Вывести дробную и целую части вещественного числа

Учитель с Информатики дал задачу.
Дано действительное число p. В первой строке вывести его закругленное целое значение, во втором — его целую часть, в третьем — его дробную часть (один знак после запятой).
Входные данные.
3.5
Исходные данные.
4
3
0.5

Очень хочу ее решить но не получается.

Только начинаю учить этот язык.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Из вещественного числа выделить целую и дробную части и сохранить их в переменные целого типа
Составить процедуру, которая из вещественного числа выделяет целую и дробную части и сохраняет их в.

Вывести целую часть заданного положительного вещественного числа А
Казалось бы легкие задачи, а не получается. Заранее огромное спасибо. 2. Вывести целую часть.

Поменять местами дробную и целую части числа и вывести полученное значение числа.
19. Дано действительное число R вида nnn. ddd (три цифровых разряда в дробной и целой частях).

Вывести целую и дробную часть вещественного числа
Если целая и дробная часть числа равны — вывести на экран True Нет — False Приведенный ниже код.

Источник

Напишите программу, которая переводит правильную дробь в десятичную, выделив (если нужно), период дроби

Напишите программу, которая переводит правильную дробь в десятичную, выделив (если нужно), период дроби.

Входные данные
Входная строка содержит два числа M и N , разделённых пробелами. Гарантируется, что M 0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

По заданным M и N получить период дроби M/N, если дробь конечная, вывести 0
По заданным M и N получить период дроби M/N, если дробь конечная, выводим 0. Пример: 1/2, выводим.

Написать программу, которая переводит числа с шестнадцатеричной системы в десятичную
С использованием функции hex, а также без неё.

Составить программу, которая переводит число А, заданный в двоичной системе счисления в десятичную
Составить программу, которая переводит число А, заданный в двоичной системе счисления, в число.

Напишите программу, которая переводит гривны в $
напишите программу, которая переводит гривны в $, DM c комментариями?

Решение

Hitoku, я даже и не знаю, что сказать. Не решение. 1/47, например?

Добавлено через 3 часа 5 минут
Hitoku, гляди. Не оптимизировал. Алгоритм в общих чертах:

Любая правильная или неправильная дробь представима в виде c,r(p), где с — целая часть, r — предпериод, p — период дроби. Например, 3/14=0,2142857142857142857. =0,2(142857): 0 — целая часть, 2 — предпериод, 142857 — период. Целая часть есть всегда, а вот есть ли предпериод и / или период — это нужно выяснять.

Сразу выделяем и печатаем целую часть дроби, и сокращаем дробь.

Теперь у нас есть дробь m/n, причём будем считать, что m p и 5 q , которые делят знаменатель. В самом деле, если знаменатель представим в виде n=2 p 5 q z, и пусть с=max(p, q), тогда

Вычисляем длину предпериода и печатаем его.

О периоде. Выяснено, что длина периода равна количеству разрядов числа, составленных из цифры 9, делящегося на z.

Вычисляем длину периода и печатаем его.

Пример: 62/28.
Целая часть: 62 div 28 = 2 — печатаем.
Выделяем целую часть из дроби: 62 mod 28 = 6, получили правильную дробь 6/28.
Сокращаем, НОД(6, 28)=2, получаем 3/14.
Определяем длину предпериода: 14=2 1 5 0 7, максимальная степень при 2 и 5 равна 1, значит, длина предпериода равна 1.
Печатаем предпериод: d = 30 div 14 = 2 — двойку и печатаем, остаток числителя дроби m = 30 mod 14 = 2.
вычисляем длину предпериода, выясняем, что 9, 99, 999, 9999, 99999 на z=7 не делятся, а 999999 делится. Следовательно, длина периода будет 6. Здорово, правда? Только вот есть подводный камень: длина периода может быть очень большой, и эти девятки ни в какой uint64 не влезут. Можно пойти экстенсивным путём, и применить тип BigInteger, но лучше делить по модулю z, умножая на 10 остаток от деления на z, и снова получать остаток от деления на z, пока остаток не станет равным 0, например, для этого случая:

Шаг Что делим Остаток Примечание
1 9 2 считаем, что первый остаток был равен 0, приписываем к нему 9, получаем 9
2 29 1 предыдущий остаток был 2, приписываем 9, получаем 29
3 19 5 предыдущий остаток был 1, приписываем 9, получаем 19
4 59 3 просто, правда?
5 39 4
6 49 0 ура, наконец-то остаток равен 0

Так, для сравнения, с девятками:

Шаг Что делим Остаток
1 9 2
2 99 1
3 999 5
4 9999 3
5 99999 4
6 999999 0

Остатки те же. Но в первом случае «что делим» не превосходит 10(z-1).

Что получилось (для простоты писал для сдачи на проверочный сайт, без контроля ввода и интерфейса):

Наверное, можно немножко соптимизировать, есть повторяющиеся фрагменты, может, в подпрограмму их выделить, может, кое-где ускорить, типа, заменить div 2 на shr 1, ещё всяких блох половить. Неохота.

Проверка. Программа выдерживает прямое попадание дроби maxlongint/(maxlongint div 10)=2147483647/214748364, результат:

10,00(000003259629023297239181761589578396043100938361514130 09134728495533497987
439848435818584396759362506715068618636833945799000359322877 07672594888778756889
621752834401103982333481245985184781198146869235287864637702 19921209737364984070
379227662009103827212392640159996748566615389908162466839561 11535266457256922339
1150025245361124148075)

Виндовый калькулятор нервно курит в сторонке, но как бы намекает, что всё верно:

Ужос. Без применения деления по модулю для выяснения длины периода нужно было бы число из 336 девяток.

Источник

Дробная часть числа паскаль

Функция Int вычисляет целую часть значения с плавающей точкой. Синтаксис:

function Int(X: ValReal) : ValReal;

Функция возвращает целую часть вещественного числа Х. Тип данных возвращаемого значения является также вещественным числом.

О типе ValReal я рассказывал здесь.

Функция Frac возвращает дробную часть числа с плавающей точкой. Синтаксис:

function Frac(X: ValReal) : ValReal;

Целая часть числа

Как известно, вещественное число имеет целую часть и дробную часть. Например, число 3,14 можно произнести словами как “три целых, четырнадцать сотых”.

Соответственно, целая часть числа 3,14 – это число 3.

И, как вы теперь уже знаете, получить целую часть числа в Паскале можно с помощью функции Int:

Дробная часть числа

Если рассмотреть всё то же число 3,14, то его дробной частью будет число 0,14. То есть вещественное число состоит из двух частей, сумма которых и является вещественным числом:

Получить дробную часть числа в Паскале можно с помощью функции Frac:

Пример программы, которая использует функции Int и Frac, приведён ниже:

Программирование. Стандартные функции Pascal-Паскаль

  • Скачено бесплатно: 6955
  • Куплено: 414
  • Pascal-Паскаль->Программирование. Стандартные функции Pascal-Паскаль

Стандартные функции Pascal-Паскаль

Стандартные математические функции Турбо Паскаля
Обращение Тип аргумента Тип результата Примечание
Abs(x) Real, integer Тип аргумента Модуль аргумента
ArcTan(x) Real, integer Real Арктангенс (значение в радианах)
Cos(x) Real, integer Real Косинус, угол в радианах
Exp(x) Real, integer Real Экспонента
Frac(x) Real Real Дробная часть числа
Int(x) Real, integer Real Целая часть числа
Ln(x) Real, integer Real Логарифм натуральный
Pi Нет Real 3,141592653
Sin(x) Real, integer Real Синус, угол в радианах
Sqr(x) Real, integer Тип аргумента Квадрат аргумента
Sqrt(x) Real, integer Real Корень квадратный
Random Нет Real Псевдослучайное число в интервале [0, 1]
Random(I) Integer Integer Псевдослучайное число в интервале [0, I]
Round(x) Real Integer Округление до ближайшего целого
Trunc(x) Real Integer Отбрасывание дробной части числа

Порядок вычислений в выражениях следующий:

  1. вычисляются подвыражения, заключенные в скобки;
  2. затем выполняются операции с наибольшим приоритетом; обычно используются следующие уровни приоритетов (в порядке убывания):
  3. возведение в степень;
  4. мультипликативные операции: * , / , div , mod;
  5. унарные операции: + , – , abs , not;
  6. аддитивные операции: +, -;
  7. операции отношения: = , <>, , =;
  8. логические операции: and, or, not;
  9. операции с одинаковым приоритетом выполняются слева направо.

Хотя нет ограничений на сложность выражений, однако выражения, содержащие более 7 операндов, трудны для чтения и понимания и поэтому такие выражения не рекомендуется использовать.

  • в Паскале нет стандартной операции или стандартной функции возведения в степень, поэтому используется следующее математическое тождество: x y = e ylnx
  • в Паскале существует только стандартная функция вычисления натурального логарифма, поэтому используется следующее математическое тождество: logab= ln b/ln a

Математическое выражение: x 3/2 – 7x + tg (x+2)

Выражение на Паскале: exp(3*ln(x)/2)-7*x+sin(x+2)/cos(x+2)

Операторы действия

Операторы действия – это средства языка, позволяющие изменять в процессе выполнения программы состояние вычислений. Самый простой оператор действия – оператор присваивания.

Пример оператора присваивания

Оператор присваивания, несмотря на кажущуюся простоту, имеет очень важное алгоритмическое значение.

Удобно считать, что выполнение присваивания переменной некоторого значения означает помещение этого значения в выделенный для переменной ящик. При этом каждый запоминающий ящик обладает следующими свойствами.

  1. В каждый момент времени в ящике может храниться не более одного значения.
  2. Каждый ящик способен хранить только значения одного и того же типа. Попытка поместить в ящик значение любого другого типа приводит к тому, что ящик отказывается принимать на хранение передаваемое ему значение – это расценивается как ошибка в программе.
  3. Значение, помещенное в ящик, будет храниться в нем до тех пор, пока в этот ящик не будет помещено новое значение (в момент присваивания соответствующей переменной этого нового значения) – при этом предыдущее содержимое ящика безвозвратно теряется (уничтожается).
  4. Находящееся в ящике значение считается текущим значением соответствующей переменной. Это текущее значение может быть выдано из ящика для использования сколько угодно раз, но при этом содержимое ящика не меняется: из него каждый раз выдается копия хранящегося значения с сохранением оригинала в ящике без какого-либо изменения.
  5. К началу выполнения программы содержимое всех запоминающих ящиков считается неопределенным; в частности, их нельзя считать и пустыми, поскольку эти ящики могли использоваться при выполнении предыдущих программ, после чего в ящиках могло что-то остаться.

Еще один оператор действия, хотя его можно лишь условно назвать таковым: он не выполняет никакого действия, это – пустой оператор (в Паскале он обознается знаком «;»). В Паскале оператором действия является также оператор процедуры. Последний из простейших операторов действия – оператор останова, который прерывает работу программы (в Паскале это оператор halt).

Ввод и вывод данных

Ввод данных с клавиатуры производится с помощью стандартной процедуры read( ) или ее разновидности readln( ). Элементы списка ввода – идентификаторы (имена) переменных, перечисляемые через запятую. При выполнении этого оператора пользователь набирает на клавиатуре соответствующую последовательность значений, разделяя их пробелами (это важно!).

Пример ввода данных с клавиатуры

read(a,b,c);

readln(a,b,c);

Вывод данных на экран производится с помощью стандартной процедуры write( ) или ее разновидности writeln( ).

Список вывода может содержать константы, переменные, выражения, формат вывода. Выражения в списке вывода разделяются запятыми.

Пример вывода данных на экран

write(a,b,c);

writeln(a,b,c);

Окончание ln в имени процедуры означает, что курсор автоматически будет переведен в начало следующей строки экрана.

Программирование

Исходники Pascal (127)

Справочник

Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту

Арифметические операции

Начнем , пожалуй , с самого простого – арифметические операции с числами в паскале. В паскаль встроены многие привычные нам арифметические операции ( Сложение , вычитание , умножение , деление и т.п ).

Как же осуществляются подобные операции с числами ?. Давайте разберем это на примере исходника одной программы.

200?’200px’:”+(this.scrollHeight+5)+’px’);»> program mypascal;
var
a,b:integer;
c:real;
begin

a:= a – b; // a-b = 7 – 4 = 3 , следовательно a = 3 , b = 4 , c = 0
b:= a + b; // a+b = 3 + 4 = 7 , a = 3 , b = 7 , c = 0

a:= b * 2; // b*2 = 7 * 2 = 14 , a = 14 , b = 7 , c = 0
c:= a / b; // a/b = 14 / 7 = 2 , a = 14 , b = 7 , c = 2

Результатом выполнения данной программы будет вывод на экран трех чисел 14 7 2. Разберемся в том , как это работает.

В начале программы мы объявляем 2 целочисленные ( integer ) переменные «a» и «b» , а также 1 переменную «c» вещественного ( real ) типа.

Зачем нам нужна вещественная переменная ? Для записи результата деления целочисленная переменная не подходит , так как у нас получается дробь , а не целое число.

Теперь мы присваиваем переменной «a» значение 7 , а переменной «b» значение 3
. Переменную «c» при этом оставляем нулевой ( она нам пока не понадобится ).

Далее (в блоке begin end) мы расписываем арифметические операции с нашими числами. Обратите внимание на то , что после символов // идет комментарий , который не компилируется программой.

Запомните : Строка a:= a – b; выглядит так a:= 7 – 4; , а не так 7:= 7 – 4;

Другие операции с числами

В паскале предусмотрены и многие другие операции с числами. Давайте разберем самые популярные из них.

1. Как найти квадрат числа в паскале ?

Для нахождения квадрата числа в паскале предусмотрена функция sqr(x) , где x – число.
Пример :

Результат : переменной «а» присваивается значение 25.

2. Как найти корень числа в паскале ?

Для нахождения корня числа в паскале предусмотрена функция sqrt(x) , где x – число.
Пример :

Результат : переменной «а» присваивается значение 5.

3. Как округлить число в паскале ?

Для того , чтобы округлить некоторое число используется операция round(x).
Пример :

Результат : переменной «а» присваивается значение 9.

4. Как убрать дробную часть у числа в паскале ?

Для того , чтобы отбросить дробную часть числа используется операция trunc(x).
Пример :

Результат : переменной «а» присваивается значение 25.

5. Как убрать целую часть у числа в паскале ?

Для того , чтобы отбросить целую часть числа используется операция frac(x).
Пример :

Результат : переменной «а» присваивается значение 0.2.

6. Как получить модуль числа в паскале ?

Чтобы получить модуль некоторого числа используется операция abs(x).
Пример :

Результат : переменной «а» присваивается значение 8.

Это были самые важные и часто используемые операции в паскале для работы с числами ( переменными ). Найти другие вы можете на этой странице.

Выводы :

Для работы с числами в паскале предусмотрено множество различных операций. Мы можем делать с числами все , что угодно ( складывать , умножать , возводить в квадрат и т.п ).

Источник

Читайте также:  Мр 153 чем чистить
Оцените статью