Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.12.2007, 19:07
Vitek220 Vitek220 вне форума
Заблокирован
 
Регистрация: 03.12.2007
Сообщения: 22
Репутация: 5
Вопрос Процедура или функция

Задача: С помощью процедуры или функции написать консольное приложение.
Задание :Даны две дроби A/B и C/D (нат.числа). Составить программу для сложения этих дробей. Результат должен быть несократимой дробью
Заранее, спасибо.http://www.delphisources.ru/forum/im...lies/smile.gif
Ответить с цитированием
  #2  
Старый 04.12.2007, 04:00
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Сегодня у меня утро добрых дел.

Код:
{$APPTYPE CONSOLE}
//------------------------------------------------------------------------------
// Нахождение наибольшего общего делителя
//------------------------------------------------------------------------------
function NOD_Euclid(A, B: LongInt): LongInt;
begin
  A := Abs(A);
  B := Abs(B);

  if (A = 0) or (B = 0) then begin
    Result := A + B;
    Exit;
  end;

  while A <> B do
    if A > B then A := A - B
             else B := B - A;

  Result := B;
end;

//------------------------------------------------------------------------------
// Функция складывает и сокращает дроби A/B и C/D
// Результат возвращает в виде строки 'X/Y'
//------------------------------------------------------------------------------
function  FractionSum(A, B, C, D: Integer): String;
var
  X, Y, N: Cardinal;
begin
  // Сумма дробей = (A*B + C*D) / (B * D)
  X := A * D + C * B; // Числитель дроби результата
  Y := B * D;         // Знаменатель дроби результата

  // Находим наибольший общий делитель для числителя и знаменателя результата
  N := NOD_Euclid(X, Y);
  // Сокращаем результат
  X := Trunc(X / N);
  Y := Trunc(Y / N);

  // Преобразуем в строку и возвращаем
  Result := IntToStr(X) + '/' + IntToStr(Y);
end;

begin
  // Складываем дроби 1/5 и 3/10
  Writeln(FractionSum(1, 5, 3, 10));
end.
Ответить с цитированием
  #3  
Старый 04.12.2007, 14:57
Vitek220 Vitek220 вне форума
Заблокирован
 
Регистрация: 03.12.2007
Сообщения: 22
Репутация: 5
Сообщение @@@

Rosenkrantz, спасибо http://www.delphisources.ru/forum/im...ilies/wink.gif
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025