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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2011, 18:18   #1
baris
 
Регистрация: 09.06.2011
Сообщений: 4
По умолчанию не правильно считает программа

Даны две дроби a/b и c/d, составить программу для сложения и вычитания дробей. Результат в виде несократимой дроби.
помогите плз срочно...

вот программа она не правильно считает:

Код:
uses crt;
var a,b,c,d,e,f,k:longint;
 
function nod(a,b:longint):longint;
begin
 if a=b then nod:=a else if a>b then nod:=nod(a-b) else nod:=nod(b-a);
end;
 
begin
 clrscr;
 write('A/B C/D -> ');
 readln(a,b,c,d);
 e:=a*d+b*c;
 f:=b*d;
 k:=nod(e,f);
 e:=e div k;
 f:=f div k;
 writeln(e,'/',f);
 readln;
end.

Последний раз редактировалось Stilet; 11.06.2011 в 16:31.
baris вне форума Ответить с цитированием
Старый 11.06.2011, 00:15   #2
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

А почему у тебя nod находит среди A и B - if a=b then nod:=a else if a>b then nod:=nod(a-b) else nod:=nod(b-a);
Наименьший общий делитель - это или B или D у тебя, а ты не правильно их поставил!!!
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 11.06.2011, 09:23   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Цитата:
Сообщение от ByAlex Посмотреть сообщение
А почему у тебя nod находит среди A и B - if a=b then nod:=a else if a>b then nod:=nod(a-b) else nod:=nod(b-a);
Наименьший общий делитель - это или B или D у тебя, а ты не правильно их поставил!!!
Нет, в этом плане локальные переменные А и В перекрывают глобальные, так что всё нормально.
Проблема в неправильной функции - парамерта 2, а передаётся только один
Код:
function NOD(a, b: longint): longint;
begin
  if a = 0 then NOD := b
  else NOD := NOD(b mod a, a)
end;
eoln вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книга Excel c макросом VBA работает только на моем компе, на других она считает не правильно...почемуууу? Lays Microsoft Office Excel 8 13.12.2010 11:29
считает не правильно rapgamer Помощь студентам 3 15.09.2010 14:23
Не правильно считает сумму чисел, которые находятся в файле. TheWanderer Общие вопросы C/C++ 6 17.04.2009 18:43
EXCEl не правильно считает формулу beliy-dis Microsoft Office Excel 5 30.07.2008 14:18