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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 20:35   #1
korib
Пользователь
 
Регистрация: 26.04.2011
Сообщений: 17
По умолчанию задача. Создание решение робей на паскале.

Разработка электронного учебного пособия в среде визуального программирования, использование, которого помогает освоить теоретические и практические аспекты темы, сформировать навыки и умения работы с дробями, провести тестирования по теме
korib вне форума Ответить с цитированием
Старый 26.04.2011, 21:56   #2
korib
Пользователь
 
Регистрация: 26.04.2011
Сообщений: 17
По умолчанию

у меня получается сложение дробей, а не основная задача. Мне кажется она должна выглядеть масштабней моей. Кто знает дополните у меня просто мозгов нехватает как создать именно полный раздел по дробям.
Код:
program hhh;
uses ctr;
var
 a,b,c      :longint:
 a2, b1     :longint:    
 a2, b2     :longint:
 nok        :longint:
procedure Nod {процедура находит НОД чисел a и d}
              {a,b,c - глобальные параметры     }
begin
  if b>a then begin {высчитываем наибольшее число и записываем его в
                   переменную a, наименьшее - в d}
    c:=a;
    a:=b;
    b:=c;
   end;
   while a mod b <> 0 do begin
      c:=b;
      b:=a mod d;
      a:=c;
   end;
end;

begin
  GlrScr;
  Write('Введите числитель 1ой дроби:>'>;Reedln(a1);
  Write('Введите числитель 1ой дроби:>'>;Reedln(b1);
  Write('Введите числитель 2ой дроби:>'>;Reedln(a2);
  Write('Введите знаменатель 2ой дроби:>'>;Reedln(d2);

if (b1=0) or (d2=0) then begin {проверка на правильность ввода чисел}
  Writeln('ошибка!! Знаменатель не должен равнятся нулю.');
  Readkey;
  Halt(1);
end;
Write(a1,'/',b1,'+',a2,'/',b2,'=');

if (a1=0) or (a2=0) then begin {если числитель одной из дробей равен нулю,
          то мы пропускаем пункт сложения дробей}

  if a1=0 then begin 
    a:=a2;b:=b2;
    a1:=a2;nok:=b2;
  end
  else begin
    a:=a1;b:=b1;
    nok:=b1;
  end;
end
else begin 
  a:=b1; d:=b2;
  Nod; {находим НОД и записываем его в переменную b}
 
  nok:b1*b2 div b; {наховим НОК знаменателей 2х дробей (d1 и b2)}
  a1:=a1*nok div b1; {умножаем числитель первой дроби на дополнительный 
                      множетель}
  a2:=a2*nok div b2; {умножаем числитель второй дроби на дополнительный 
                      множетель}
  a1:=a1+a2; {складываем дроби : числитель полученной дроби - a1, знаменатель 
              требуемой дроби -nok}

  a:=a1; b:=nok;
 end;

 Nod;   {сокращаем полученную дробь до несократимой дроби}
 Write (a1 div b);    {выводим на экран полученый результат}
 if nok div b<>1 then Writeln('/',nok div b);
 writeln;
 Redkey; 
END.
вот такой код примерно получился...
korib вне форума Ответить с цитированием
Старый 26.04.2011, 22:03   #3
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

дополнить нужно остальными операциями + как мне кажется, нужно показать этапы вычисления
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 27.04.2011, 00:51   #4
korib
Пользователь
 
Регистрация: 26.04.2011
Сообщений: 17
По умолчанию

извеняюсь что так долго не отвечал просто на сайт зайти не мог, выкидывало. А препод так и сказал чтоб получилось как в учебнике раздел целый по дробям.
rubius2008 и вы правы чтоб были этапы вычисления...

Последний раз редактировалось korib; 27.04.2011 в 00:58.
korib вне форума Ответить с цитированием
Старый 27.04.2011, 17:44   #5
korib
Пользователь
 
Регистрация: 26.04.2011
Сообщений: 17
По умолчанию

я тут сделал еще одну часть программы

Код:
program s1;

uses crt;
Var   a,b,f:word;
st:string;
Function HOD(a,b:word):word;
var i,c:word;
begin
Hod:=1;
If a<b then begin
       c:=a;
    a:=b;
    B:=c;  end;
for i:=1 to a div 2 do begin
      If (a mod i=0) and(b mod i=0) then Hod:=i;
    end
        end;
procedure drob(s:string;var a,b:word);
var I,d:integer;
c,t:string;
 begin
 i:=1;
    while s[i]<>'/' do inc(i);
 d:=length(s)-i;
 c:=copy(s,1,i-1);
 t:=copy(s,i+1,d);
 val(c,a,d);
 val(t,b,d);
end;
begin

readln(st);
drob(st,a,b);
f:=Hod(a,b);
A:=a div f;
b:=b div f;
write(a,'/',b);

readln;
end.
просьба обратить ваше внимание у меня уже просто мышления не хватает, хоть как их объединить.

Последний раз редактировалось korib; 28.04.2011 в 14:55.
korib вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение интегралов на ПАСКАЛЕ 34882 Помощь студентам 4 16.05.2010 20:18
Решение задичи на Паскале Tekmessa Паскаль, Turbo Pascal, PascalABC.NET 17 16.04.2010 11:12
Решение матриц в Паскале Baby33 Паскаль, Turbo Pascal, PascalABC.NET 0 20.01.2009 12:03