English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Дано x и y как положительные целые числа, n как количество десятичных знаков, задача - сгенерировать деление на n десятичных знаков
Вход-: x = 36, y = 7, n = 5 Вывод-: 5.14285 Вход-: x = 22, y = 7, n = 10 Вывод-: 3.1428571428
Методы, используемые в следующей программе, таковы-
Ввести значения a, b и n
Проверить, если b равно 0, то деление将达到 бесконечность; если a равно 0, то результат будет равен 0, потому что что-то делится на 0 равно 0
Если n больше 1, то хранить значение остатка, затем вычесть его из делителя, затем умножить на десять. Начать следующий итерацию
Вывести результат
START Шаг 1-> объявить функцию для вычисления деления до n десятичных знаков void compute_division(int a, int b, int n) Проверить, если b == 0 вывести Непредельное End Проверить, если a == 0 вывести 0 End Проверить, если n <= 0 вывести a/b End Проверить, если ((a > 0) && (b < 0)) или ((a < 0) && (b > 0)) print "-" set a = a > 0 ? a : -a set b = b > 0 ? b : -b End Declare and set int dec = a / b Loop For int i = 0 and i <= n and i++ print dec Set a = a - (b * dec) IF(a == 0) break End Set a = a * 10 set dec = a / b IF (i == 0) print "." End End Step 2-> In main() Declare and set int a = 36, b = 7, n = 5 Call compute_division(a, b, n) STOP
#include <bits/stdc++.h> using namespace std; void compute_division(int a, int b, int n) { if (b == 0) { cout << "Infinite" << endl; return; } if (a == 0) { cout << 0 << endl; return; } if (n <= 0) { cout << a / b << endl; return; } if (((a > 0) && (b < 0)) || ((a < 0) && (b > 0))) { cout << "-"; a = a > 0 ? a : -a; b = b > 0 ? b : -b; } int dec = a / b; for (int i = 0; i <= n; i++) { cout << dec; a = a - (b * dec); if (a == 0) break; a = a * 10; dec = a / b; if (i == 0) cout << "."; } } int main() { int a = 36, b = 7, n = 5; compute_division(a, b, n); return 0; }
результат вывода
5.14285