Как найти минимальное значение чисел в паскале

На занятии происходит знакомство с логическим типом Boolean в Паскале. Рассматривается алгоритм того, как находится минимальное и максимальное число в Паскале

Сайт labs-org.ru предоставляет лабораторные задания по теме для закрепления теоретического материала и получения практических навыков программирования на Паскале. Краткие теоретические сведения позволят получить необходимый для этого минимум знаний. Решенные наглядные примеры и лабораторные задания изложены по мере увеличения их сложности, что позволит с легкостью изучить материал с нуля. Желаем удачи!

Содержание:

  • Логический тип данных Boolean в Паскале
  • Минимальное и максимальное число в Паскале.
    [Название файла: task_bool4.pas]

Мы уже научились писать программы, основанные на линейных алгоритмах, в Паскале. И даже уже составляем нелинейные алгоритмы — с ветвлением — в которых используются логические выражения, которые принимают значения true или false.

Значения логического типа:

TRUE

FALSE

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

1
2
3
4
5
6
var 
  A: integer;
begin
  A := 5;
  write(A > 0); {Будет выведено True}
end.

Для записи результата логического выражения используется специальная логическая переменная, которая имеет в Паскале тип boolean и может также принимать одно из двух значений — true или false.

Посмотрим, как работает та же самая задача с логической переменной:

1
2
3
4
5
6
7
8
var 
  A: integer;
  b: boolean;
begin
  A := 5;
  b:=A > 0; 
  write(b);{Будет выведено True}
end.

Пример: Рассмотрим пример работы с типом boolean в pascal:

1
2
3
4
5
6
var a:boolean;
begin
a:=true;
if a=true then writeln ('истина')
  else writeln('ложь');
end.

Для создания сложных условий используются специальные логические операции: and, or, not и xor.

Задача Boolean 1. Дано целое положительное число. Проверить истинность высказывания: «оно является четным»

[Название файла: task_bool1.pas]

Рассмотрим пример с использованием логической операции XOR:

Пример: Запросить два целых: X, Y. Проверить истинность высказывания: «Только одно из чисел X и Y является нечетным»

1
2
3
4
5
6
7
8
9
10
11
program Boolean;
var
  x,y: integer;
  c :boolean;
 
begin
  write('Введите X, Y: ');
  read(x,y);
  c := (Odd(x)) xor (Odd(y)); 
  writeln('Только одна из переменных X и Y имеет нечетное значение - ', c); 
  end.

Рассмотрим еще одно решение задачи в Паскале с использованием логической переменной:

Задача Boolean 2. Даны три целых числа: A, B, C. Проверить истинность высказывания: «B находится между числами A и C».

[Название файла: task_bool2.pas]

Рассмотрим решение более сложной задачи с переменной логического типа:

Пример: Дано трехзначное число. Проверить истинность высказывания: «Все цифры данного числа различны».

Показать решение:

1
2
3
4
5
6
7
8
9
10
11
12
13
const a=348;
var
   d_n, s_n, e_n: integer;
   flag:boolean;
begin
flag:=false;
s_n:=a div 100;
d_n:=((a mod 100)div 10);
e_n:=a mod 10;
if (s_n<>d_n) and (d_n<>e_n) and (e_n<>s_n) then 
   flag:=true;
writeln(flag);
end.

Здесь каждый разряд получается путем использования операций деления нацело и взятия остатка от деления: s_n — это цифра сотого разряда, d_n — цифра десятого разряда, e_n — единицы.

Задача Boolean 3. Дано целое N > 0. С помощью операций деления нацело и взятия остатка от деления определить, имеется ли в записи числа N цифра «2». Если имеется, то вывести TRUE, если нет — вывести FALSE.

[Название файла: task_bool3.pas]

Задача Boolean 4. Дано целое положительное. Проверить истинность высказывания: «Данное число является нечетным трехзначным».

Минимальное и максимальное число в Паскале.

[Название файла: task_bool4.pas]

При организации поиска минимального или максимального числа среди ряда чисел всегда на помощь приходит старенький «бабушкин» алгоритм:

  • Представим ситуацию, что мы жарим пирожки, и уже нажарили целую большую горку; теперь надо выбрать из них самый большой, т.е. в нашем случае максимальный.
  • Берем верхний пирожок, т.е. первый, и говорим, что он пока самый большой и откладываем его в сторону.
  • Затем берем второй и сравниваем с самым большим, если этот второй пирожок оказывается больше — откладываем его на место «бывшего самого большого» и говорим, что теперь он самый большой.
  • Берем следующий и повторяем действия. Так осуществляем данную процедуру со всеми пирожками.

Иногда в качестве первоначального максимума назначается самое малое возможное число (в зависимости от контекста задачи). А в качестве минимума — напротив, самое большое возможное число. Например, если сказано, что необходимо найти максимальное / минимальное среди положительных чисел, меньших 1000, то:

или

max:=integer.MinValue;; // минимальное среди типа Integer
min:=integer.MaxValue;; // максимальное среди типа Integer

PascalABC.NET:

Можно использовать стандартные функции max() и min():

print(max(2,8)); // 8
print(min(2,8)); // 2

Рассмотрим теперь решение задачи на Паскале нахождения максимального числа:

Пример: В компьютер вводятся 10 чисел. Выводить максимальное из введенных чисел.

Показать решение:

Pascal PascalABC.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
var i, chislo, max:integer;
begin
// первое введенное число 
//сразу определяем как максимальное:
readln(max); 
for i:=2 to 10 do
begin
  readln (chislo);
  if chislo > max then 
    max:= chislo
end;
writeln(max)
end.
1
2
3
4
5
6
7
8
9
10
11
12
begin
// первое введенное число 
//сразу определяем как максимальное:
var maximum:=readInteger(); 
for var i:=2 to 10 do
begin
  var chislo:=readInteger();
  // используем стандартную функцию max():
  maximum := max(chislo,maximum); 
end;
writeln(maximum)
end.

Аналогично осуществляется поиск минимального из чисел.

Для лучшего понимания темы поиска максимального или минимального значения предлагаем посмотреть видео урок:

Задача Max 1. В танцевальном клубе участвуют 10 представительниц женского пола. Определите, может ли самая старшая из них быть матерью самой младшей (в таком случае разница в возрасте может составлять не менее 17 лет).

[Название файла: task_max1.pas]

Задача Max 2. Найти минимальное и максимальное из 10 введенных чисел и вывести сумму их порядковых номеров.

[Название файла: task_max2.pas]

Задача Max 3. Средняя продолжительность жизни лабораторной мыши – 10 лет. Найдите максимальный показатель продолжительности жизни у пяти белых мышей и у пяти мышей-альбиносов. У каких мышей показатель уровня жизни выше?

[Название файла: task_max3.pas]

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

проверь себя

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

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

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

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

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. 

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

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

В этой статье мы рассмотрим сравнение чисел.

При сравнении чисел мы выбираем то число, которое банально больше. Ну, например, при сравнении числа 2 и 3 мы выберем максимальным числом 3, а минимальным 2. Графически 3 на числовой оси X находится правее, чем 2.

Я покажу один из самых рациональных алгоритмов выбора максимального и минимального числа, подходящего для общего случая. Это присвоение для переменных, выражающих минимальное и максимальное значение, значение одного из элементов заданных чисел/массива.

Ну теперь перейдем к практике.

Простая программка для сравнения 3 чисел(min_max_1):

Program Min_Max;
var a,b,c,min,max:integer;
begin
write(‘Введите 3 числа для сравнения (через пробел) : ‘);read(a,b,c);
min:=a;max:=a;
if b>max then max:=b;if b<min then min:=b;
if c>max then max:=c;if c<min then min:=c;
writeln(‘Максимальное число : ‘,max);
writeln(‘Минимальное число : ‘,min);
readln;
end.

Теперь подробнее.

var a,b,c,min,max:integer;

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

write(‘Введите 3 числа для сравнения (через пробел): ‘);read(a,b,c);

Мы вводим три числа через пробел, т.к. здесь оператор write.

min:=a;max:=a;

Здесь мы присваиваем переменным min и max значение одного из введенных чисел, если вы хотите разнообразия, то можете вместо переменной a написать b или c.

if b>max then max:=b; if b<min then min:=b;
if c>max then max:=c; if c<min then min:=c;

Здесь происходит сравнение оставшихся введенных переменные со значениями переменных min и max.

writeln(‘Максимальное число : ‘,max);
writeln(‘Минимальное число : ‘,min);

Ну здесь у нас происходит вывод ответа, думаю, объяснять где, какое значение выводится не надо=)

readln;

Это используется для того, чтобы мы увидели результат программы.

end.

Ну собственно логическое завершение программы=)

Дополнение:

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

Uses crt;

и

Begin clrscr;

Студворк — интернет-сервис помощи студентам

Составить алгоритм нахождения min(a,b,c). Воспользоваться алгоритмом-процедурой нахождения min из 2-х чисел.

Использовать при решении можно любые процедуры/функции/алгоритмы, главное — оформить в Pascal. Наработок и даже приблизительных вариантов нет, т.к. в уч. заведениях провинций требуют, но ничего не объясняют.

Добавлено через 10 минут
По сути, стоит задача усложнить вот этот код словами function и procedure

Pascal
1
2
3
4
5
6
7
8
9
Program Min;
var a,b,c,min:integer;
begin
readln(a,b,c);
min:=a;
if b<min then min:=b;
if c<min then min:=c;
writeln('Минимальное число : ',min);
end.

Урок 24. Поиск максимального (минимального) элемента в массиве

Просмотров 5к. Обновлено 23 ноября 2020

Урок из серии: «Язык программирования Паскаль»

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

Переменные:

m — массив;

n — количество элементов в массиве;

i — переменная цикла;

max — значение наибольшего элемента;

numer_max — его порядковый номер.

Перед началом поиска максимального элемента допустим, что его первый элемент и является максимальным элементом, а его индекс указывает позицию максимального элемента в массиве. Это запишется так:

max := m[1];    {Cчитать 1-й элемент максимальным}
numer_max := 1; {Запомнить номер максимального элемента}

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

Сравнение очередного элемента массива с максимальным осуществляется оператором if m[i] > max then. Если очередной элемент массива больше, чем максимальный, то следует считать его значение максимальным и запомнить его индекс. Данный фрагмент кода записывается таким образом:

for i:= 2 to n do
   begin
      if m[i]> max then
         begin
            max:= m[i];
            numer_max:= i;
         end;
   end;

Текст процедуры получится таким:

 procedure Maximum(m:myarray; var max,numer_max:integer);
    {
    Процедура нахождение максимального элемента массива и его номера.
    m    : имя массива;
    max  : значение максимального элемента;
    maxi : номер максиального элемента в массиве.
    }
   var
      i: integer;
   begin
      max:=m[1];
      numer_max:=1;
   for i:= 2 to n do
      begin
         if m[i]> max then
            begin
               max:= m[i];
               numer_max:= i;
           end;
     end;
   end;

Составим программу. В ней воспользуемся для заполнения массива уже знакомой процедурой — Init2, которая заполняет массив случайными числами из заданного интервала.

program Max_elem;
   const
      n = 20;
   type
   myarray= array[1..count] of byte;
   var
      m:myarray;
      i, max, maxi: integer;
   Procedure Init2(a,b: integer; Var m : myarray);

   ...
   procedure Maximum(m:myarray; var max,numer_max:integer);
   ...

begin {main}
  init2(0, 50, m);
  maximum(m, max, maxi);
  writeln('Максимальный элемент - ', max);
  writeln('Он расположен на ',maxi, ' месте.');
end.

Для поиска минимального элемента и его порядкового номера  меняем обозначения:

min — значение наименьшего элемента;

numer_min — его порядковый номер.

Перед началом поиска предполагаем, что первый элемент массива минимальный, и его индекс —  номер минимального элемента. При сравнении очередного элемента с минимальным,  меняем знак отношения на противоположный.

Вы познакомились с алгоритмами поиска максимального (минимального) элемента массива.

На следующем уроке продолжим знакомиться с алгоритмами обработки одномерных массивов.

Понравилась статья? Поделить с друзьями:
  • Как составить киносценарий по тексту
  • Мутное стекло фары как исправить
  • Как найти долги по авто
  • Как найти ведьмачьи мечи
  • Как найти работу в каменке пензенской области