Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tabbols
3 / 3 / 0
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3
#1

Выделить период в десятичной дроби, если таковой имеется - C++

09.06.2015, 10:14. Просмотров 1009. Ответов 12
Метки нет (Все метки)

Добрый день, форумчане! Подскажите пожалуйста, стоит задача, выделить период в дроби, если таковой имеется !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2015, 10:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделить период в десятичной дроби, если таковой имеется (C++):

Перед каждым знаком '=' вставить символ, стоящий за ним, если таковой имеется - C++
нужно написать программу, которая читает с клавиатуры строку символов, преобразует ее и выводит результат на дисплей... помогите , ( с...

Удалить из списка L за каждым вхождением элемента Е один элемент, если таковой имеется и он отличен от Е - C++
помогите решить плз Составить программу, которая удаляет из списка L за каждым вхождением элемента Е один элемент, если таковой имеется и...

Умножение десятичной периодической дроби на число - C++
Нужно написать программу которая принимает на вход два числа q и k Q - периодическая десятичная дробь в формате 0.nnn(ppp), где nnn — от...

Найти длину периода и сам период бесконечной степенной дроби по основанию Р - C++
время поджимает, завтра сдавать. препод ни фига не объясняет!!! есть решение, осталось написать прогу на C++. Задача №1 Имеется N...

Перевод десятичной дроби в обычную и вывод на экран - C++
Доброго времени суток, у меня такая проблема, мне нужно перевести десятичные дроби в обычные, например: 0.1 выдать на экран как 1/10, или...

Определить длину периода десятичной записи дроби 1/n - C++
1)Из заданого числа вычли сумму его чисел. Из результата вычли ещё раз сумму его цифр и т. д.Сколько таких действий надо сделать чтоб...

12
Байт
Диссидент
Эксперт C
16842 / 11107 / 1744
Регистрация: 24.12.2010
Сообщений: 21,825
09.06.2015, 10:58 #2
Цитата Сообщение от tabbols Посмотреть сообщение
стоит задача
Поставь задачу, пожалуйста, поточнее. Как эта дробь задается? И что значит "если таковой имеется"? У любого рационального числа период "имеется".
0
tabbols
3 / 3 / 0
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3
09.06.2015, 11:03  [ТС] #3
Байт, сори, признаю ошибку.
Дробь вводится с клавиатуры, ввиде двух чисел (3 14), числитель и знаменатель.
На выходе должны получить число вида : 0,2(...), где, вместо (...) должен находиться период.

Добавлено через 33 секунды
Байт, Вопрос в том, как распознать этот период, так как он может содержать большое множество цифр.
0
Байт
Диссидент
Эксперт C
16842 / 11107 / 1744
Регистрация: 24.12.2010
Сообщений: 21,825
09.06.2015, 11:29 #4
Цитата Сообщение от tabbols Посмотреть сообщение
как распознать этот период,
Период распознается по повторению остатка. Для этого можно завести массив размером со знаменатель, обнулить его. Потом делить столбиком, и отмечать в этом массиве (единичками) получающиеся остатки.

Добавлено через 2 минуты
Цитата Сообщение от tabbols Посмотреть сообщение
Байт, сори, признаю ошибку.
Я тоже вынужден признать свою.
Цитата Сообщение от Байт Посмотреть сообщение
У любого рационального числа период "имеется".
Моя плюха. Если деление удалось довести до конца (остаток = 0) то никакого периода в общепризнанном смысле нет.

Добавлено через 4 минуты
Там есть еще одна тонкость. Первые нули результата в период не входят.
1/70 = 0.0(142857)
А задача где-то на форуме решалась...
0
tabbols
3 / 3 / 0
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3
09.06.2015, 11:31  [ТС] #5
Байт, а если получилось число 0,01010101, разве оно будет представлено не в таком виде 0,(01) ?
0
Байт
Диссидент
Эксперт C
16842 / 11107 / 1744
Регистрация: 24.12.2010
Сообщений: 21,825
09.06.2015, 11:39 #6
Перевести простую пробь в десятичную
Перевод обыкновенной дроби в десятичную (в т.ч. периодическую)
0
XZentus
201 / 199 / 41
Регистрация: 06.10.2013
Сообщений: 552
09.06.2015, 11:41 #7
tabbols, в примере Байта период 142857, а не 0142857
0
Байт
Диссидент
Эксперт C
16842 / 11107 / 1744
Регистрация: 24.12.2010
Сообщений: 21,825
09.06.2015, 11:43 #8
Цитата Сообщение от tabbols Посмотреть сообщение
Байт, а если получилось число 0,01010101, разве оно будет представлено не в таком виде 0,(01) ?
Случайное совпадение с каноническим 0.0(10)
Это 1/99 кажется? А посмотри на 1/990.
0
tabbols
3 / 3 / 0
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3
09.06.2015, 13:08  [ТС] #9
Байт, а как выделить число до периода, потому что до периода может ведь стоять например 0,2 или 0,02 или такого не может быть ?
0
XZentus
201 / 199 / 41
Регистрация: 06.10.2013
Сообщений: 552
09.06.2015, 16:23 #10
Цитата Сообщение от tabbols Посмотреть сообщение
может ведь стоять например 0,2 или 0,02 или такого не может быть ?
До начала периода может стоять сколько угодно нулей, при анализе их надо записать куда-нибудь и при выдаче ответа пользователю подставить обратно.
1
Вениамин Шепард
24 / 10 / 4
Регистрация: 11.01.2014
Сообщений: 85
09.06.2015, 17:43 #11
http://mathonline.um-razum.ru/drobi-...hnuju.html#top

Хороший сайт, здесь написан интерактивный алгоритм анализа
0
Байт
Диссидент
Эксперт C
16842 / 11107 / 1744
Регистрация: 24.12.2010
Сообщений: 21,825
10.06.2015, 10:36 #12
Цитата Сообщение от XZentus Посмотреть сообщение
их надо записать куда-нибудь
можно просто посчитать
0
Вениамин Шепард
24 / 10 / 4
Регистрация: 11.01.2014
Сообщений: 85
10.06.2015, 14:22 #13
1. Находите целую часть
2. Берёте остаток, умножаете на 10, запоминаем его, делим
3. Если такой остаток уже был, значит предыдущее число было концом периода, а то, которое мы запомнили, было началом, иначе возвращаемся к номеру 2

Пример: берём 13/99
Находим целую часть: 0,
Остаток 13, запоминаем, умножаем на 10, 130/99, получается 1, прибавляем к числу 0,1
Остаток 31, запоминаем, умножаем на 10, 310/99, получается 3, прибавляем к числу 0,13
Остаток 13, он уже был, а значит это период.
Ответ 0,(13)
1
10.06.2015, 14:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2015, 14:22
Привет! Вот еще темы с ответами:

Найти переодическую и непереодическую части десятичной дроби равной m/n - C++
Даны взаимно простые натуральные числа m и n (m>n). Найти переодическую и непереодическую части десятичной дроби равной m/n. Заранее...

Получение целой и дробной части для десятичной дроби - C++
Привет всем. Ищу ответа на достаточно простую задачу: человек вводит число в виде десятичной дроби, с которым в дальнейшем нужно...

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

Дано натуральное число n > 1. Определить длину периода десятичной записи дроби 1/n. - C++
Здравствуйте, помогите пожалуста решить задачу на с++... Дано натуральное число n > 1. Определить длину периода десятичной записи дроби...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.