Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2012, 13:48   #1
Photolife
Пользователь
 
Регистрация: 16.03.2012
Сообщений: 29
Подмигивание Рекурсия и процедура.

Не знаю как решить задачу... через рекурсию и процедуру, задача следущая - Даны две дроби A/B и C/D (A,B,C,D – натуральные числа). Составить программу сложения дробей. Ответ должен быть несократимой дробью.
Решить нужно в паскале.

Помогите!

Последний раз редактировалось Photolife; 10.05.2012 в 15:05.
Photolife вне форума Ответить с цитированием
Старый 10.05.2012, 13:51   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

По правилам математики нужно дробь по одному основанию перевести в дробь по второму основанию (B или D разницы нет) и произвести сложение. Затем сократить дробь. То есть найти наибольший общий делитель.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.05.2012, 14:22   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

О! Кто-то забыл начальную школу...
прийдётся напомнить...

Цитата:
По правилам математики нужно дробь по одному основанию перевести в дробь по второму основанию (B или D разницы нет)
ошибаетесь. Ищется НОК (наименьшее общее кратное) для знаменателей B и D.

потом выполняется умножение первой дроби (и числителя и знаменателя) на число, равное НОК(B,D) div B
и второй дроби — на число, равное НОК(B,D) div D
это процесс называется приведение дробей к общему знаменателю

после этого осуществляется сложение полученных после приведения числителей.

после этого необходимо найти НОД (наибольший общий делитель) для числителя и знаменателя и разделить полученную дробь на это число. Результатом и будет несократимая дробь.

p.s. формально говоря, при компьютерном расчёте можно воспользоваться способом, когда вместо поиска НОК(B,D) берётся банально произведение этих двух чисел, если это число больше НОК, то дробь всё равно в конце сократится.
Результат всё равно должен получится единственный (и одинаковый)!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.05.2012, 14:34   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
ошибаетесь. Ищется НОК (наименьшее общее кратное) для знаменателей B и D.
Это второй вариант решения. Я решал по-своему и учителю нравилось. Потому что решение других отличалось от моего и сразу было видно кто списал . И если у кого-то рвет шаблон что числитель надо умножать на дробное число это их проблемы .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 10.05.2012 в 14:36.
Utkin вне форума Ответить с цитированием
Старый 10.05.2012, 14:47   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Я решал по-своему и учителю нравилось. Потому что решение других отличалось от моего и сразу было видно кто списал . И если у кого-то рвет шаблон что числитель надо умножать на дробное число это их проблемы
и то, что возникают проблемы с точностью/округлением - это тоже никого не волновало?!!
тогда супер!

И, если несложно, напишите, плиз, как по "вашему алгоритму" найти сумму дробей
1/3 и 1/7
(желательно на Паскаль)
заранее большое спасибо!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.05.2012, 14:53   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
заранее большое спасибо!
А какие проблемы? Если изначально арифметика вещественных чисел реализована криво? Это проблема процессора, а не алгоритма.

Цитата:
(желательно на Паскаль)
Я реализовывал длинную арифметику на с# и дельфи. Если очень хочется вариант на Дельфи есть на данном форуме. Точно не скажу, но по-моему тема называется Помощь в тестировании. На Паскаль нет никакого желания.

Цитата:
тогда супер
А когда они кого интересовали? Вон спутники падают и ничего - пятна на солнце .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 10.05.2012 в 14:59.
Utkin вне форума Ответить с цитированием
Старый 10.05.2012, 15:04   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Utkin
Я реализовывал длинную арифметику на с# и дельфи
Вау! А откуда здесь длинная арифметика взялась??!?!

хорошо. просто на калькуляторе вычислите то, что вы называете "нужно дробь по одному основанию перевести в дробь по второму основанию"
и распишите решение нахождение суммы для дробей 1/3 и 1/7
Бог с ним, с Паскалем, с C# и Delphi!!
Не надо программы. Просто напишите последовательно - по действиям, что на что нужно умножать (на что умножается числитель, на что - знаменатель первой дроби, второй дроби), что получается в результате приведения, что будет, если полученные числа сложить. Как Вы умеете сокращать ДРОБНЫЕ числа. покажете? Ок?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.05.2012, 15:05   #8
Photolife
Пользователь
 
Регистрация: 16.03.2012
Сообщений: 29
По умолчанию

Математику слава богу знаю, а как это в Паскале решить не знаю
Photolife вне форума Ответить с цитированием
Старый 10.05.2012, 15:12   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Просто напишите последовательно - по действиям,
Я уже написал это.

Цитата:
А откуда здесь длинная арифметика взялась??!?!
Вам же нужна точность без ошибок округления? Или мне? Или у Вас длинная арифметика только целочисленная? У меня она дробная.

Цитата:
Как Вы умеете сокращать ДРОБНЫЕ числа
Да, и в чем проблема? Сокращаются также как и целые.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.05.2012, 19:56   #10
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Utkin, святые угодники, ладно хоть не через квадратные полиномы Кутузова О_О. Вариант с НОК/НОД куда проще и быстрее. А стандартов бояться не надо - они вносят в нашу жизнь стабильность и благополучие
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия Homutova_Julia Помощь студентам 3 08.06.2011 18:24
Рекурсия Olesya777 Помощь студентам 1 30.05.2011 17:47
Рекурсия Alexsey1991 Помощь студентам 1 12.05.2010 10:24
Процедура в процедура в C++ Builder Ecosasha C++ Builder 2 06.06.2009 17:17