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

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

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

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

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

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. 

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

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

Ольга Божеволова

Ученик

(153)


5 лет назад

Найти минимальный положительный из данных десяти ненулевых целочисленных элементов. Если требуемые элементы отсутствуют, то вывести 0.
не могли бы помочь?
1 Program min; – заголовок программы [1]
2 Var a:array[1..10] of integer – раздел описания переменных
i,min:integer;
3 begin- начало раздела операторов
4Writeln (‘Введите 10 чисел ‘);- вывод текста на экран
5 for i:=1 to 10 do begin – начало цикла For
6 Writeln (‘Значение ‘,i:1, элемент массива ‘a[‘,i,’]= ‘); – вывод текста на экран
7Readln (a[i]);- ввод значений массива
8 end; – конец цикла
9 int min =0;
10 for i:=0 to 10 do begin – начало цикла For
11 if a[i] < min then min:= a[i];
12 end;- конец цикла
13 writeln (‘Минимальное положительное значение = ‘, min); – вывод полученного значения на экран
14 readln; – задержка экрана для просмотра результата
15 end. – конец программы
не могу найти ошибку

На занятии происходит знакомство с логическим типом 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]

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

проверь себя

0 / 0 / 0

Регистрация: 22.07.2011

Сообщений: 9

1

Даны три числа. Найти наименьшее из них.

17.11.2011, 00:10. Показов 23205. Ответов 2


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

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



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

17.11.2011, 00:10

Ответы с готовыми решениями:

Даны три целых числа, найти среднее из них
Даны три целых числа, найти среднее из них. Средним назовём число, которое больше наименьшего из…

Даны три целых числа, найти среднее из них
Даны три целых числа, найти среднее из них. Средним назовём число, которое больше наименьшего из…

Даны три числа. Надо найти суммы двух больших из них
Даны три числа. Надо найти суммы двух больших из них.
Пример:
2,09 3,82 0,78
Ответ: 5,91

Даны три числа a,b,c. Если из них есть отрицательные, то найти произведение этих 3 чисел, а иначе найти min из
Даны три числа a,b,c. Если из них есть отрицательные, то найти произведение этих 3 чисел, а иначе…

2

Anton_shestak

5 / 5 / 4

Регистрация: 14.11.2011

Сообщений: 27

17.11.2011, 08:47

2

Лучший ответ Сообщение было отмечено nukacoal как решение

Решение

Вот решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program z1;
Var a, b, c:integer;
begin
write('Введите 3 числа :');
read(a, b, c);
write('Наименьшее из них :');
If (a<b) and (a<c) then
                   If a<>0 then write(a);
If (b<a) and (b<c) then
                   If b<>0 then write(b);
If (c<a) and (c<b) then
                    If c<>0 then write(c);
If a=0 then
       If b<c then write(b)
              else write(c);
If b=0 then
       If a<c then write(a)
               else write(c);
If c=0 then
       If a<b then write(a)
              else write(b);
If (a=0) and (b=0) then write(c);
If (b=0) and (c=0) then write(a);
If (a=0) and (c=0) then write(b);
end.



0



Puporev

Почетный модератор

64286 / 47585 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

17.11.2011, 12:37

3

Короче

Pascal
1
2
3
4
5
Var a, b, c,mn:integer;
........................
if a<b then mn:=a else mn:=b;
if c<mn then mn:=c;
...............................



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

17.11.2011, 12:37

Помогаю со студенческими работами здесь

Даны три числа. Найти два из них, чья разность (по модулю) является наименьшей
Даны три числа – a, b и c. Найти два из них, чья разность (по модулю) является наименьшей.

Даны три целых числа, найти среднее из них. Средним называется число, которое больше наименьшего из данных чисел, но меньше наибольшего
Кто может решить данную задачку с помощью циклов в паскале АВС?
Даны три целых числа, найти…

Даны пять различных целых чисел. Найти среди них два числа, модуль разности которых имеет: а) наибольшее значение б) наименьшее значение
Даны пять различных целых чисел. Найти среди них два числа, модуль разности которых имеет:
а)…

Даны три вещественных числа. Выбрать из них те, которые принадлежат интервалу (1,3)
Даны три вещественных числа. Выбрать из них те, которые принадлежат интервалу (1,3)

Даны три числа.Найти наименьшее из них
Даны три числа.Найти наименьшее из них.

Даны три числа. Найти наименьшее из них.
Можете помочь решить вот эти задачи:

1)Даны три числа. Найти наименьшее из них.
34 45 56
34

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

3

Программа
нахождения наименьшего 
из  заданного
ряда чисел.

Program
N18 (Input, Output);          

Объявление
имени программы

Var         

Блок
объявления глобальных переменных

X            
: Array [1..50] Of Real;       

Переменная
X – массив действительных чисел из 50
элементов

N            
: Integer;              

Переменная
N – размерность массива X

Min       
: Real;    

Переменная
Min – искомый минимальный элемент
массива

i              
: Integer;              

Переменныя
i – параметр цикла

Begin    

Начало
тела программы

WriteLn
(‘PASCAL: Нахождение наименьшего из чисел: x[1],x[2],…,x[N].’);   

Формулировка
цели алгоритма

Write
(‘Введите число элементов массива (N<=50)
N = ‘);           

Запрос
N – размера исходного массива

ReadLn
(N);         

Ввод
N

WriteLn
(‘Введите элементы массива: ‘);    

Запрос
ввода элементов самого массива

For
i := 1 To N Do              

Цикл
для i от 1 до N, где i – номер очередного
элемента

Begin    

Начало
тела цикла

Write
(‘X[‘, i, ‘] = ‘);             

Вывод
удобной подсказки

ReadLn
(X [i] );   

Ввод
очередного элемента – X[i]

End;      

Конец
тела цикла

Min
:= X[1];         

За
минимальный элемент берем первый
элемент массива

For
i := 2 To N Do              

Цикл
для i от 2 до N сравнения минимального
элемента со всеми остальными

If
(Min > X [i] ) Then Min := X [i];  

Если
элемент
Min
больше X[i],
то заносим
X[i]
в
Min

WriteLn
(‘Минимальный элемент массива – ‘, Min: 4: 2);               

Вывод
найденного максимального элемента

ReadLn;

Ожидание
нажатия клавиши Enter для завершения

End.       

Конец
программы.

Добавить комментарий