Как составить программу в паскале которая находит

Записывать данные в массива можно и без помощи readln, достаточно простой команды read. Приведём простой пример где считываем данные из массива и выводим:

for i:=1 to n do
 write(a[i]);

Это было простое повторение. А теперь давайте попробуем написать программу, которая ищет в массиве число k, и если оно есть, то выводит yes или no:

for i:=1 to n do
 if a[i]=k then
  q:=1;
if q=1 then
 write('Yes')
else
 write('No');

Эту программу все всегда пишут с первого раза именно в таком виде.

Какие тут могут быть ошибки?

Ошибки довольно таки простые:

Например переменная q и так может быть равна 1, так как в разных средах Ваша программа будет воспринимать всё по разному. Тогда онулируем переменную в самом начале:

q:=0;
for i:=1 to n do
 if a[i]=k then
  q:=1;
if q=1 then
 write('Yes')
else
 write('No');

И видно что программа будет работать очень долго, если у нас будет массив из миллиарда элементов, так как наш цикл сначала проверит весь массив и только потом выдаст результат, что нам не нужно. Тогда ускорить программу нам поможет замена цикла на цикл с условием — while:

q:=0; i:=1;
while (q<>1) and (i<=n) do
begin
 if a[i]=k then
  q:=1;
 i:=i+1;
end;
if q=1 then 
 write('Yes')
else
 write('No');

Теперь программа стала работать быстрее, так как после нахождения нужного нам числа, цикл остановится, но эта программа ещё далека от совершенства. Теперь давайте попробуем вида-изменить цикл while, и убрать переменную q:

i:=1;
while (a[i]<>k) and (i<=n) do
 i:=i+1;
if q=1 then 
 write('Yes')
else
 write('No');

Наш цикл стал немного лучше, но всё же в нём есть грубые ошибки, и эти ошибки именно в цикле, а не в условии, так как мы его пока затрагивать не собираемся. И так какую же ошибку мы можем сейчас изменить? Ошибка очень проста, достаточно посмотреть на условие цикла, и всё станет понятно — мы говорим о том, что сначала цикл проверяет совпадение, а потом кончился ли цикл или нет, что может выдать ошибку.

То есть если у нас в программе строгие проверки с количеством элементов в массиве, то ошибка будет видна нам сразу, а так мы её и не заметим, то есть цикл может быть переполненным — значение i станет равно n+1, что нам не нужно, тогда достаточно просто поменять условия местами, и как известно в pascal — если одно условие не сработает, то и другое проверятся не будет:

i:=1;
while (i<=n) and (a[i]<>k) do
 i:=i+1;
if q=1 then 
 write('Yes')
else
 write('No');

Мы можем ещё упростить верхнюю часть:

Мы каждый раз проверяем в условии цикла — конец ли массива, что нам вообще и не нужно, если представить что у нас цикл с миллионом элементов, то каждый раз проверять конец ли массива нет смысла, для облегчения этой задачи используется Барьерный элемент. Что он из себя представляет:

Это самый последний элемент массива, добавленный вручную, который имеет искомое значение, то есть мы добавим искомое значение в конец массива, и при проверки условия будет проверять именно это — имеет ли переменная i значение n+1:

i:=1;
a[n+1]:=k;
while a[i]<>k do
 i:=i+1;
if i=n+1 then  write('No')
else write('Yes');

Мы добавили одну ячейку памяти и при этом ускорили программу вдвое.

Теперь перейдём к следующему:

Второй максимум.

То есть мы будем искать в массиве второй максимум, второй максимум — это число, которое меньше максимума, но больше других чисел.

Сначала напишем программу, которая просто находит максимальное число в массиве:

max:=a[1];
for i:=2 to n do
 if a[i]>max then
  max:=a[i];

Как видим — максимум у нас равен первому элементу, который мы будем сравнивать со всеми другими элементами.

До этого мы представляли себе — если у нас много чисел, то всех их нужно загонять в массив, но это не так — представьте себе что в Вашей программе нельзя использовать массивы, то как сделаете Вы?

Самое простое решение — это использование одной переменной для хранения всех значений:

readln(k);
max:=k
for i:=2 to n do
begin
 readln(k);
  if k>max then
   max:=k;
end;

Теперь перейдём к решению задачи со вторым максимумом.

Представим что изначально переменные max и max2 равны минус бесконечности.

Теперь изменим код предыдущей программы именно так, что бы он искал max2 и не было ни каких ошибок:

readln(k);
max:=k;
for i:=2 to n do
begin
 readln(k);
  if k>max then
  begin
   max2:=max;
   max:=k;
  end else
   if (k>max2) and (k<max) then
    max2:=k;
end;

В этой программе мы всё учли, даже то, что max может изначально иметь максимальное значение.

Представьте себе задачу подсчитать сколько максимумов в массиве, то как бы Вы реализовали её?

Мы предлагаем ввести в программу счётчик, который увеличивался на 1 при новом максимуме или числу равному максимуму. Увеличивать мы будем не по старинке — i:=i+1, а при помощи функции increment, сокращённо inc, и в скобках уже пишем имя переменной, эта функция увеличивает переменную на единицу. Также есть и функция, которая уменьшает значение на единицу — decrement, сокращённо dec.

Теперь давайте напишем нашу программу:

readln(k);
max:=k;
maxcount:=0;
for i:=2 to n do
begin
 readln(k);
  if k>max then
  begin
   inc(maxcount);
   max2:=max;
   max:=k;
  end else
   if (k>max2) and (k<max) then
    max2:=k
   else
    if max=k then
     inc(maxcount);
end;

Повторение. 

Видео уроки на повторение

Решение математических выражений в Pascal. 

Задача (урок 9к2-29.11.2021, 9к1-30.11.2021)
Составить программу для вычисления значение выражения  






где x целое число, вводимое с клавиатуры.
блок-схема

текст программы:
var x:integer;
    y:real;
begin
writeln(‘введите целое число’);
readln(x);
y:=(5*x+sqr(x))/8;
writeln (‘при x=’,x,’ y =’,y);
end.

Одномерный массив.

Упорядоченное множество однотипных элементов, расположенное в строке (или столбце).
В общем виде:
а1, а2, а3, …, аn

Описание одномерного массива
var mas: array[1..5] of integer;
Задается массив с именем mas, количество элементов 5, элементы целые числа
имена элементов — mas[1], mas[2] …

Формирование массива. Ввод элементов массива с клавиатуры.


Задача  (урок 9к2-29.11.2021, 9к1-30.11.2021)
Составьте программу, задающую одномерный массив целых чисел из 6 элементов, вводимых с клавиатуры, и оформите вывод элементов на экран в строчку.

текст программы
var m: array [1..6] of integer;
    i: integer;
begin
writeln(‘ввод элементов’);
for i:=1 to 6 do readln(m[i]);
for i:=1 to 6 do write(m[i],’ ‘);
end.

Формирование массива с помощью функции случайных чисел random. 

Задача  (урок 9к2-06.12.2021)
Составьте программу, задающую одномерный массив размерность 10, состоящий из случайных чисел из промежутка  от 5 до 22. Оформите вывод элементов на экран в строчку.

Пояснение.
Обратите внимание, что случайные числа задаются функцией random(x). Для того чтобы задать случайные числа из промежутка от a до b есть формула x:=random(b-a+1)+a, в нашем случае
x:=random(18)+5

текст программы

var m: array [1..10] of integer;

    i: integer;

begin

for i:=1 to 10 do

begin

m[i]:= random(18)+5;

write(m[i],’ ‘);

end;

end.

Задача  (урок 9к2-20.12.2021, 9к1-21.12.2021)

Составьте программу, которая в одномерном массиве размерностью 12 (элементы случайные числа из промежутка  от 1 до 9) подсчитывает количество чётных элементов. Оформите вывод элементов на экран в строчку, вывод количества чётных на следующей строке.

Пояснение Обратите внимание, что условием чётности элемента будем выводить через функцию mod (целочисленный остаток от деления). Четные числа делятся на 2 с нулевым остатком: if w[i] mod 2=0 then k:=k+1



текст программы

var m:array[1..12] of integer;

    i,k:integer;

begin

k:=0;

for i:=1 to 12 do

begin

m[i]:=random(9)+1;

write(m[i],’ ‘);

if m[i] mod 2=0 then k:=k+1;

end;

writeln;

writeln(‘Количество четных — ‘,k);

end.

Задача  (урок 9к2-20.12.2021, 9к1-21.12.2021)

Составьте программу, которая в одномерном массиве размерностью 8 (элементы массива случайные числа из промежутка от 15 до 100) находит максимальный элемент.  Оформите вывод элементов на экран в строчку, максимальный на следующей строке.

Пояснение
Обратите внимание, что это задание аналогично задачам на поиск максимального из вводимых с клавиатуры чисел (материал 8 класса), но в данном случае при составление программы используется массив.


текст программы

var m:array[1..8] of integer;

    i,max:integer;

begin

max:=14;

for i:=1 to 8 do

begin

m[i]:=random(86)+15;

write(m[i],’ ‘);

if max<m[i] then max:=m[i];

end;

writeln;

writeln(‘Максимальный — ‘,max);

end.

Задача  (урок 9к2-20.12.2021, 9к1-21.12.2021)

Составьте программу, которая в одномерном массиве размерностью 12 (элементы массива случайные числа из промежутка от 0 до 6) находит количество элементов равных 3. Оформите вывод элементов на экран в строчку, количество искомых элементов на следующей строке.

Пояснение
Обратите внимание, что переменная k — счетчик, поэтому начальное значение переменной обнуляем. Условие для подсчета 3 if w[i]=3 then k:=k+1, т.е. если элемент равен 3, то k увеличивается на 1.


текст программы

var w:array[1..12] of integer;

    i,k:integer;

begin

k:=0;

for i:=1 to 12 do

begin

w[i]:=random(7);

write(w[i],’ ‘);

if w[i]=3 then k:=k+1;

end;

writeln;

writeln(‘Количество троек ‘,k);

end.


Задача  (урок 9к2-10.01.2022, 9к1-11.01.2022)

Составьте программу, которая в одномерном массиве размерностью 7 (элементы массива случайные числа из промежутка от 1 до 8) подсчитывает сумму элементов меньше или равных 3. Оформите вывод элементов на экран в строчку, количество искомых элементов на следующей строке.

Пояснение
Обратите внимание, что переменная s — накопитель суммы, поэтому начальное значение переменной обнуляем. Условие для подсчета 3 if w[i]<=3 then s:=s+w[i], т.е. если элемент меньше или равен 3, то s увеличивается на значение элемента.

текст программы

var w:array[1..7] of integer;

    i,s:integer;

begin

s:=0;

for i:=1 to 7 do

begin

w[i]:=random(8)+1;

write(w[i],’ ‘);

if w[i]<=3 then s:=s+w[i];

end;

writeln;

writeln(‘Сумма элементов <=3 ‘,s);

end.

Задача  (урок 9к2-17.01.2022, 9к1-18.01.2022)

Составьте программу, которая в одномерном массива размерность 20, состоящим из случайных чисел из промежутка  от 1 до 100, находится наибольший элемент оканчивающийся на цифру 2. Оформите вывод элементов на экран в строчку.

Пояснение 
Обратите внимание, что в данной задаче используем сложное условие. Проверка, что число оканчивается на цифру 2: m[i] mod 10 =2 и сравнение с максимальным max<m[i].

max может не поменяется, т.е. в данной последовательности не будет чисел, оканчивающихся на 2, и после цикла нужно поставить проверку на значение max.

текст программы

var m:array[1..20] of integer;

    i,max:integer;

begin

max:=0;

for i:=1 to 20 do

begin

m[i]:=random(100)+1;

write(m[i],’ ‘);

if (m[i]mod 10=2)and(max<m[i]) then max:=m[i];

end;

writeln;

if max=0 then writeln(‘Среди данных чисел, нет оканчивающегося на 2’)

else writeln(‘Максимальный, оканчивающийся на 2 ‘,max);

end.

Оператор цикла while (цикл ПОКА)

while <условие> do оператор;


Выполняет действие или действия пока истинно условие. После каждого прохождения тела цикла, условие проверяется и если условие ложно, осуществляется выход из цикла. 
Если условие истинно всегда, то происходит зацикливание. Чтобы прервать зациклившуюся программу, следует использовать комбинацию клавиш Ctrl-F2.
Условие — логическое выражение, записанное с помощью логических операторов сравнения.


Задача  (урок 9к2-31.01.2022, 9к1-01.02.2022)

Составьте программу, которая пока не будет введен 0 запрашивает целые положительные числа с клавиатуры и находит среди них наибольшее. Результат выводится на экран.

текст программы

var x,max:integer;
begin
writeln(‘Введите целое число’);
readln(x);
max:=0;
while x<>0  do 
begin
if max<x then max:=x;
readln(x);
end;
writeln(‘max=’,max);
end.


Задача (урок )

Составьте программу, которая для любого вводимого с клавиатуры целого числа вычисляет и выводит на экран количество единиц, десятков, сотен и т.д. (например, для числа 7865 — вывод 5 — 6 — 8 — 7)

Пояснение 
Обратите внимание, что в данной программе удобно использовать оператор цикла while (пока), с помощью функции mod 10 находим последнюю цифру числа 
a:= x mod 10 и выводим ее на экран, затем убираем ее с помощью функции div 10  x:=x div 10 и работаем с новым числом и т.д. пока x не станет 0.

текст программы

var x,a:integer;
begin
readln(x);
writeln(‘Результат’);
while x<>0 do
begin
a:= x mod 10;
write(a,’ — ‘);
x:=x div 10;
end;
end.

Задача (урок )
В целочисленных массивах a и b содержатся длины катетов десяти прямоугольных треугольников
(
a[i] – длинна первого катета, b[i] – длинна второго катета i-того треугольника). Найдите
треугольник с наибольшей площадью. Выведите его номер, длины катетов и площадь.
Предусмотрите случай, когда таких треугольников несколько.

текст программы

var a:array[1..10] of integer;
    b:array[1..10] of integer;

    s:array[1//10] jf real;
    i,n,k:integer;sm:real;
begin
sm:=0;
n:=0;
for i:=1 to 10 do
begin
a[i]:=random(10)+1;
b[i]:=random(10)+1;
write(i,’:’,a[i],’,’,b[i],’ ‘);
s[i]:=1/2*a[i]*b[i];
if sm<s[i] then begin sm:=s[i];n:=i;end;
end;

for i:=1 to 10 
if s[i]=sm then k:=k+1;
writeln;
writeln(‘наибольшая площадь=’,sm,’ катеты ‘,a[n],’,’,b[n]);

writeln(‘ количество таких треугольников ‘,k);
end.


Сортировка одномерного массива

Задача (урок )
Составить программу, которая сортирует элементы одномерного массива размерностью 7 по возрастанию (элементы массивы случайные числа от 10 до 60).
текст программы
var mas:array[1..7] of integer;
    i,j,a:integer;
begin
for i:=1 to 7 do
begin
mas[i]:=random(51)+10;
write(mas[i],’ ‘);
end;
for j:=1 to 6 do
for i:=1 to 6 do
if mas[i]>mas[i+1] then
       begin
       a:=mas[i];
       mas[i]:=mas[i+1];
       mas[i+1]:=a;
       end;
writeln;
write (‘Отсортированный массив  ‘);
for i:=1 to 7 do write(mas[i],’ ‘);
end.


Задача (урок )
Составить программу, которая в данном массиве: m[1]:=4; m[2]:=8; m[3]:=7; m[4]:=2; m[5]:=1;m[6]:=8; m[7]:=1; m[8]:=5; m[9]:=6; m[10]:=8;
находит максимальный элемент (элементы) и заменяет его (их) на 0.
текст программы
var m:array[1..10] of integer;
    i,max,k:integer;
begin
m[1]:=4; m[2]:=8; m[3]:=7; m[4]:=2; m[5]:=1;
m[6]:=8; m[7]:=1; m[8]:=5; m[9]:=6; m[10]:=8;
max:=m[1];


for i:=1 to 10 do
begin
write(m[i],’ ‘);
if m[i]>max then max:=m[i];
end;
writeln;
writeln(‘max=’,max);


for i:=1 to 10 do
if m[i]=max then m[i]:=0;


writeln(‘результат’);
for i:=1 to 10 do
write(m[i],’ ‘);
end.



Повторение. Работа со строковыми функциями copy и length. 

Задача  (урок )

Составьте программу, которая печатает на экране вводимое с клавиатуры словосочетание из двух слов в обратном порядке (пример ввод: доброе утро; вывод: утро доброе).

Пояснение 
Для решения данной задачи воспользуемся оператором цикла while. Вырезая из введенной строки s последовательно по одной букве с помощью функции copy, сравниваем эти символы с пробелом и пока не пробел собираем их в строку s1. Это будет второе слово в новой фразе. Первое вырезаем с символа n+1, количество символов — длина фразы — n.

текст программы
uses crt;
var s,s1:string;
    n,d:integer;
begin
writeln(‘Введите фразу из 2-х слов, между словами 1 пробел’);
readln(s);
d:=length(s);
n:=1;
while copy(s,n,1)<>’ ‘ do
begin
s1:=s1+copy(s,n,1);
n:=n+1;
end;
writeln(copy(s,n+1,d-n)+’ ‘+s1);
end.

Исходник программы Паскаль, которая находит корни квадратного уравнения по заданным коэффициентам

Добрый день. Сегодня я хочу поделиться программой, написанной на языке программирования Паскаль, а именно исходник программы, которая находит корни квадратного уравнения.

Итак, задача звучит следующим образом:

«Составьте программу вычисления корней квадратного уравнения по данным значениям его коэффициентов«.

Решение задачи на языке паскаль довольно простое. Вначале необходимо считать данные (значения коэффициентов) в три переменные a,b,c. Затем нужно посчитать дискриминант, после проверить больше или меньше нуля или равно ему значение дискриминанта. В зависимости от значения дискриминанта считать значение корней или вывести сообщение о том, что корней нет.

Исходный код программы нахождения корней:

Скачать исходник: koren2.pas

Как составить программу для нахождения корней квадратного уравнения в паскале

Введение.

Здравствуйте. На этот раз я хотел бы предложить вам исходник программы на языке PascalABC, которая решает квадратное уравнение, строя его на считанных с клавиатуры коэффициентов.

Задача.

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

Программирование на Паскале. Тема: «Решение квадратного уравнения с использованием конструкции IF–THEN–ELSE»

Цели урока:

  • Повторить с учащимися правила решения квадратных уравнений
  • Вспомнить алгоритмическую конструкцию IF-THEN-ELSE
  • Составить блок-схему программы и саму программу на языке Pascal
  • Проверить работоспособность программы на конкретных примерах
  • Расширить представления учащихся о применении языка Pascal
  • Воспитать у учащихся чувство аккуратности, внимательности, ответственности
  • Научить учащихся самостоятельно находить свои ошибки в программах
  • Оборудование:

  • Таблички с формулами
  • Плакат с блок-схемой алгоритма КВУР
  • Листочки с индивидуальными заданиями
  • Система программирования «Turbo Pascal 7.0»
  • До сих пор мы с вами говорили о каких-то отвлечённых задачах из области математики. Сегодня мы поговорим о конкретной задаче, которая встречается у вас почти на каждом уроке. Это решение квадратного уравнения. Я хочу, чтобы вы на примере этой задачи поняли, что программирование — это не просто прихоть учителя, это действительно раздел информатики, который может нам помочь, например, в решении конкретных математических задач. Нужно только уметь разбираться в этом.

    2. Математическое решение

    Давайте вспомним, что понимают под квадратным уравнением?

    Что из себя представляют числа a,b,c и как их называют?

    С чего начинают решение квадратного уравнения?

    Найдите вокруг себя формулу дискриминанта. (D=b 2 -4ac) (Приложение 3)

    Как мы решаем далее квадратное уравнение? (сравнение D с нулём)

    Какие выводы мы из этого делаем?

    (если D 0, то два корня)

    Как найти корни квадратного уравнения? Найдите формулы корней среди тех, что развешены повсюду.

    Если я случай наличия корней квадратного уравнения сведу к условию D0, то что я получу в случае D=0?

    (Два одинаковых корня)

    Давайте ещё раз подробно разберём нашу задачу:

    Итак, у нас есть квадратное уравнение ax 2 +bx+c=0.

    Мы должны решить его, т.е. найти такие значения х, при которых правая часть уравнения =0. Мы знаем, что для этого нам надо:

    Найти дискриминант D=b 2 — 4ac.

    Сравнить его с нулём

    D=b 2 -4ac=10 2 -4*3*3=100 — 36 =64

    Х1=,

    X2 =

    3. Составление блок-схемы алгоритма.

    По заданному решению попробуем составить блок-схему алгоритма в тетради. Кто справится первым, прошу к доске.

    Подпишем основные элементы блок — схемы применительно к языку программирования.

    4. Составление программы по блок — схеме.

    Теперь, пользуясь нашими записями, составим программу и покажем её учителю. Тот, кто до конца урока составит только программу, не проверив её на компьютере, получит три, тот, кто наберёт программу на компьютере, но не проверит её на примерах, получит три. Тот, кто выполнит всё задание, получит пять.

    А я раздам вам домашнее задание.

    Var a,b,c,d,x1,x1: real;

    Write(‘введите коэффициенты уравнения a,b,c’); readln(a,b,c);

    Else writeln(‘действительных корней нет’)

    1. Составить и набрать программу КВУР на компьютере.

    Загрузка среды Pascal- 2ЩЛКМ по значку Pascal, нажать ALT+ENTER.

    Запуск программы — ЩЛКМ по кнопке RUN выбрать RUN.

    2. Решить следующие квадратные уравнения и показать учителю их решения (если нет такой возможности, то занести их в маршрутный лист (Приложение 4)

    1,5х 2 -0,6х — 4,8 = 0

    3. Переделайте программу КВУР таким образом, чтобы в ней учитывался случай, когда D=0 и уравнение имеет один корень.

    4. Закрыть программу.

    Подсказка: Меню File — Exit или ALT+X.

    1. За простое воспроизведение (набор программы) без проверки оценка «3»

    2. За проверку работы программы на примерах, представленных учителем оценка «4»

    3. За решение всех заданий и дополнительное изменение программы для случая D=0, оценка «5»

    4. Закрыть программу.

    Подсказка: Меню File — Exit или ALT+X.

    Х1 Х2
    1 3,230139 0,1031947
    2 1,464102 -5,464102
    3 1,106107 -1,356107
    4 Корней нет
    5 Корней нет
    6 1,6 0
    7 2 -1,6
    8 Корней нет
    9 0,6872614 -1,131706
    10 9,486833 -9,486833

    Можно дать дополнительное задание:

    Изменить программу так, чтобы ответ был с точностью до 2-х знаков после запятой.

    1) Напишите программу проверки пароля. Пусть пароль — некоторое число, зафиксированное в программе. Программа печатает приглашение «введите пароль» и вводит число. Если введённое число совпадает с фиксированным паролем, то программа выводит приветствие, если нет — сообщает о том, что пароль не угадан.

    7. Подведение итогов урока.

    Итак, ребята, сегодня мы с вами решали конкретные задачи из математики, применяя свои умения по программированию. Вы получили следующие оценки за свои знания. (Перечисление оценок) На следующем уроке нам предстоит познакомиться с новыми алгоритмами — Циклическими.

    На сегодня наш урок закончен. До свидания.

    Литература:

  • И. Семакин, Л. Залогова «Информатика. Базовый курс. 9 класс», М., БИНОМ, 2005г.
  • А.А. Чернов «Конспекты уроков информатики в 9-11 классах», Волгоград: Учитель, 2006г.
  • Л.И. Белоусова, С.А. Веприк «Сборник задач по курсу информатики», М., «Экзамен», 2007.
  • var
      x,y,a,b,c,d: real;
     
    begin
      repeat
        write('vvedite x: ');
        readln(x);
      until (x<>3)and((x*x*x-sqr(x)+2*x+1)<>0);
      a:=3*sqr(x)+x-3;
      if a<0 then a:=a*(-1);
      b:=x-2;
      if b<0 then b:=b*(-1);
      c:=x*x*x-sqr(x)+2*x+1;
      if c<0 then c:=c*(-1);
      d:=x-3;
      if d<0 then d:=d*(-1);
      y:=a/c+b/d;
      writeln('y=',y:7:3);
      readln;
    end.

    Проще всего задача поиска минимального из трех, четырех и более чисел, решается перегрузкой функции нахождения минимума из двух.

    Аналогичные функции можно написать для поиска максимального из чисел. Для этого достаточно сменить знак сравнения в функции с двумя аргументами(в первой из рассмотренных).

    Для реализации сначала нужно написать функцию, которая находит минимальное из двух чисел.

    Функция определения минимального из двух чисел

    function Min(x1, x2 : integer) : integer;
    begin
      if x1 < x2 then
        Min := x1
      else
        Min := x2;
    end; 
    

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

    Функция поиска наименьшего из трех чисел

    function Min(x1, x2, x3 : integer) : integer;
    begin
      Min := Min(Min(x1, x2), x3);
    end;
    

    А что если нужно сравнить четыре, пять и больше чисел, и найти минимальное из них?

    Без проблем, мы можем писать столько перегруженных функций, сколько нам нужно.

    Минимум из четырех чисел

    function Min(x1, x2, x3, x4 : integer) : integer;
    begin
      Min := Min(Min(x1, x2, x3), x4);
    end; 
    

    Эта функция использует вызов двух предыдущих.

    Программа для поиска и вывода минимальных чисел

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

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

    begin
      writeln(Min(3, 5));
      writeln(Min(9, 1, 0));
      writeln(Min(8, 4, 7, 2));
      readln;
    end. 
    

    Если предполагается сравнивать много чисел, то лучше всего представить их в виде массива, и искать минимальный или максимальный элемент в массиве.

    Смотрите также:

    Понравилась статья? Поделить с друзьями:
  • Непредвиденная ошибка при восстановлении системы 0x8000fff windows 7 как исправить ошибку
  • Как найти няню в воронеже
  • Прозрачный пластик пожелтел как исправить
  • Как найти разрешение на строительство по адресу
  • Как быстро найти силы для работы