Вторник, 23.04.2024, 12:07
Приветствую Вас, Гость |
Меню сайта
Наш опрос
Нужен ли форум на этом сайте?
Всего ответов: 1301
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Примеры решения задач, процедуры и функции

Пример 1
Найти наименьший член последовательности a(n)=n2-7n+1, где n изменяется от 1 до m.

Решение. Для поиска минимального элемента используем функцию, находящую минимальный элемент из двух параметров.

    program task2;
  var m: integer;
{кол-во элементов посл-сти}

      n: integer;
{номер текущего элемента посл-сти }
           
k: real;        {минимальный элемент посл-сти}  
 
  function min(p1, p2 :real) :real;

  begin 

    
if p1 < p2 then min:=p1

    
else   min:=p2

  end;

  begin

    
write('Введите m - количество элементов           последовательности');
    
readln(m);
    
k := 1*1-7*1+1;

    
for n:=2 to m do

    
k := min(k, n*n-7*n+1);

    
write('Минимальный элемент                            последовательности равен ', k)

   
end.


Пример 2

Написать набор процедур для работы с обыкновенными дробями, обеспечив их сложение, вычитание, умножение, деление.

Решение. Обыкновенную дробь будем изображать двумя целыми числами:

Ø      первое число будет представлять числитель дроби,

Ø      а второе - знаменатель.

В процессе вычислений требуется сокращать дроби на их наибольший общий делитель (НОД), для вычисления которого используется алгоритм Евклида. Если одно из чисел равно нулю, то НОД берем равным 1.

Разработаем также отдельные процедуры для ввода и вывода обыкновенных дробей

     Var  x, y, {числитель и знаменатель дроби }
   p, q,
{числитель и знаменатель дроби }

  
s, t:integer;
{числитель и знаменатель дроби }

  
{ Ввод обыкновенной дроби }

   procedure wwod(var a, b:integer);

  
begin

     
writeln;

     
write('Введите целые: числитель и
знаменатель обыкновенной дроби ');
     
readln(a,b);
  
end;
  
{ Вывод результата }

  
   procedure
wywod(a, b:integer);

   begin

     
write(a,'/',b);  writeln

   end
;
    { Вычисление НОД(
x,y) }

   function nod(x, y:integer):integer;

  
begin
     
if (x=0) or (y=0) then nod:=1
     
else
     
begin

        
while x<>y do
         begin

           
while x>y do x:=x-y;

         
  while y>x do y:=y-x

        
end;

        
nod:=x;

     
end;

   end;

  
{ Сокращение дроби }

   procedure sokr(var c, d:integer);

  
var r:integer;

  
begin

     
r:=nod(c, d);

     
c:=c div r;  
     
d:=d div r;

   end;

  
{ Сложение двух дробей }

   procedure sum(a,
b, c, d:integer;
var e, f:integer);
  
var r:integer;

  
begin

     
e:=a*d+b*c;  
     
f:=b*d;

     
sokr(e,f)

   end;

  
{ Вычитание двух дробей }

   procedure raz(a, b, c, d:integer;
var e, f:integer);
  
var r:integer;

  
begin

     
e:=a*d-b*c; 
     
f:=b*d;

     
sokr(e,f)

   end;

  
{ Умножение двух дробей }

   procedure mult(a, b, c, d:integer;
var e, f:integer);
  
var r:integer;

  
begin

     
e:=a*c;      
      f:=b*d;

     
sokr(e,f);

   end;

  
{ Деление двух дробей }

   procedure del(a, b, c, d:integer;
var e, f:integer);
  
var r:integer;

  
begin

     
e:=a*d;      
     
f:=b*c;

     
sokr(e,
f);

   end;

   begin

     
write('Введите первую дробь ');

     
wwod(x,y);

     
write('Введите вторую дробь ');

     
wwod(p,q);

     
write('Сумма равна ');

     
sum(x, y, p, q, s, t);

     
wywod(s, t);

      write('Разность равна ');

     
raz(x, y, p, q, s, t);
     
wywod(s, t);
     
write('Произведение равно ');

      mult(x, y, p, q, s, t);

      wywod(s, t);

     
write('Частное равно ');

     
del(x, y, p, q, s, t);

     
wywod(s, t);

   end.

 

 

Форма входа
Поиск
Мы в сети
Реклама
Для того чтобы не видеть рекламу в правом верхнем углу сайта пройдите простую процедуру регистрации
ФОРУМ
У нас наконецто появился форум! Добро пожаловать! Будьте первыми, задайте направление форуму! =)
--- Не стесняемся - заходим на форум! ---