Помощь - Поиск - Пользователи - Календарь
Полная версия: Процедура
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Alexandr
Помогите пожалуйста написать программу по процедурам.Я уже заходил на FAQ файлы и в поиск
но такого не нашел.
1. Вычислить: 1. Даны три вещественных массива A(N), B(M), C(K). Определить, какие из них расположены в порядке возрастания.
и если можно подскажите что-нибудь про эту задачу если вам не трудно:
2. Привести дробь 1 + 1/2 + 1/3 + ... + 1/15 к несократимому виду c/d. ( процедура, приводящую дробь a/b к несократимому виду p/q.)
volvo
Первая будет такой:
procedure IsAZ(var arr: array of real; const size: integer;
var Ok: boolean);
var i: integer;
begin

i := 1; Ok := true;
while (i < size) and Ok do
if arr[i - 1] >= arr[i] then Ok := false
else inc(i);

end;

Вызов:
Var
a: array[1 .. 10] of real;
Good: boolean;
...
IsAZ(a, 10, good); { В Good содержится результат проверки (true - возрастающий массив) }

Вторую задачу попробуй решить сам...
Shura
По первой задаче.... Ну вчера же решение похожей выкладывал.. Только там со строками матрицы нужно сделать похожее. Ну а матрицу можно считать массивом массивов.
http://forum.pascal.net.ru/index.php?showtopic=8638&st=5#
volvo
Shura, а ты что, работал там с процедурами? Я почему-то не заметил этого.
Shura
Я не думаю что забить кусок кода из той программы в процедуру очень уж сложно... Alexandr сказал, что он искал, но ничего не нашел - я лишь указал на недавний пост.

Вот вторая задача. Так как пояснений, как именно нужно сокращать числитель и знаменатель (типа, куда минус девать если что, сокращать ли минусы, и прочее...) нету, то решение только для положительных А и B.

Код

Uses
Crt;

var
a,b,p,q: LongInt;

Procedure make(a,b: LongInt; var p,q: LongInt);
var
  c: LongInt;
begin
  if b = 0 then
    begin
     p:=a;
     q:=b
    end
  else
    if (a mod b) = 0 then
      begin
       p:=a div b;
       q:=1
      end
    else
      begin
       if a < b
       then c:=a
       else c:=b;
    while (c > 1)and(not((a mod c = 0)and(b mod c = 0)))
    do Dec(c);
       p:=a div c;
       q:=b div c
      end;
  Write(a, ' / ', b, ' = ');
  if q = 1
  then Write(p)
  else Write(p, ' / ', q)
end;

begin
ClrScr;
Write('Vvedite a,b: ');
ReadLn(a,b);
a:=abs(a);
b:=abs(b);
Make(a,b,p,q);
ReadLn
end.
Alexandr
Спасибо за помощь volvo.Вот ничтяк, даже не ожидал что мне так поможет этот форум.
<...>
<БОЛЬШОЕ СПССИБО>
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.