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

Добрый день, товарищи!

Максимальное число массива - последовательности в Pascal

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

Напишем нам задачу:

Разработать программу определения максимума из последовательности чисел. Все числа вводятся пользователем.

Хорошо. Значит исходя из задания можем предположить, что сначала нужно организовать ввод этой самой последовательности пользователем.

В конце статьи будет ссылка на скачивание кода с Яндекс.Диска!

1. Типы данных

Давайте подумаем: нам нужна последовательность цифр. Вроде бы логично ввести N переменных, чтобы пользователь просто вводил каждую. Вот.. Только сколько это – N? Вот и первая сложность – простыми переменными нам тут не обойтись.

Объявим массив
Объявим массив

Если с первыми тремя переменными проблем нет, то теперь у нас новый вариант их объявления – массивы.

Все переменные сделаем Integer для простоты эксперимента. Вы, разумеется, можете изменить тип данных на Real, при необходимости.

Как объявляется массив вы можете видеть выше.

  • mass – имя массива, работает так же как имя переменной
  • array – объявление переменной массивом
  • [1..100] – диапазон массива. В данном массиве не может быть более 100 элементов
  • of integer – тип данных массива, так же может быть и of char и of real и т.д.

2. Начало программы

Задаем количество элементов последовательности
Задаем количество элементов последовательности

В этом куске кода вводим пару пригласительных сообщений, и предлагаем пользователю ввести, какой длины будет его последовательность.

3. Заносим элементы в массив

Обычный цикл
Обычный цикл

Работает это так: просто вводим числа в последовательность по циклу.

От 1 до нашего максимального количества. Кроме того, mass[i] – это значение массива в данный момент. Например i = 3, значит mass[3] – это третий элемент массива. Вообще, есть такой нюанс, что нумерация в массиве начинается с 0, а не с 1, но в рамках этой программы останавливаться на этом не будем. Разберем это в публикации, посвященной массивам.

4. Находим максимум

Находим максимальное число
Находим максимальное число

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

После этого объявим цикл (начиная с двух, так как первый элемент нами уже занят), который будет сравнивать каждое следующее число с нашим “максимальным”, и, если число больше – оно будет становится новым максимальным. Все просто!

В конце просто выведем это.

5. Тесты

Вот несколько наборов данных, которые использовались для тестов.

Как видим, максимальный элемент находится без проблем

6. Заключение

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

Весь код программы будет выглядеть так:

Весь код программы
Весь код программы

Как и говорил, вот ссылка на скачивание этого файла с Яндекс.Диска:

Скачать 21max.pas с Яндекс.Диска

Максимальное число массива - последовательности в Pascal

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

По возможности я попросил бы подписаться и оценить публикацию. Сейчас это критически важно для развития канала. Так то!

Доброго вам всем здоровьица в эти трудные времена!

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

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

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

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

function Max(x1, x2 : integer) : integer;
begin
  if x1 > x2 then
    Max := x1
  else
    Max := x2;
end; 

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

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

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

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

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

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

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

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

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

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

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

begin
  writeln(Max(1, 4));
  writeln(Max(9, 2, 7));
  writeln(Max(8, 3, 6, 5));
  readln;
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]

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

проверь себя

Innn

0 / 0 / 0

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

Сообщений: 9

1

Вывод наибольшего числа

11.03.2013, 22:14. Показов 37678. Ответов 7

Метки нет (Все метки)


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

Здравствуйте! Нужна ваша помощь, помогите пожалуйста!

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Program lab;
Var
 a,b,c,max:integer;
Begin
 Write('первое число:');
 Readln(a);
 Write('второе число:');
 readln(b);
 Write('третье число:');
 Readln(c);
If (a>b) and (a>c) then max:=a;
If (b>a) and (b>c) then max:=b;
If (c>a) and (c>b) then max:=c;
Writeln('Наибольшее число=',max);
end.

Если ввести числа 5, 10, 2 – то выведет на экран:

первое число:5
второе число:10
третье число:2
Наибольшее число=10

А как сделать, чтобы наибольшее число выводилось на самом верху? (10, 5, 2)



0



38 / 38 / 22

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

Сообщений: 95

11.03.2013, 22:19

2

Цитата
Сообщение от Innn
Посмотреть сообщение

А как сделать, чтобы наибольшее число выводилось на самом верху? (10, 5, 2)

А какой в этом смысл?

К тому же на экран выводится только max, то есть ваше максимальное число(и да оно на самом верху).
А числа до этого вы вводите, и они остаются на экране.



0



0 / 0 / 0

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

Сообщений: 9

11.03.2013, 22:21

 [ТС]

3

Цитата
Сообщение от PaniCa.
Посмотреть сообщение

А какой в этом смысл?

Ну такое задание, чтобы наибольшее число выводилось первым
По-сути должно быть так:
второе число:10
первое число:5
третье число:2



0



PaniCa.

38 / 38 / 22

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

Сообщений: 95

11.03.2013, 22:24

4

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Program lab;
Var
 a,b,c,max:integer;
Begin
 Write('первое число:');
 Readln(a);
 Write('второе число:');
 readln(b);
 Write('третье число:');
 Readln(c);
If (a>b) and (a>c) then max:=a;
If (b>a) and (b>c) then max:=b;
If (c>a) and (c>b) then max:=c;
Writeln('Наибольшее число=',max);
writeln('Первое число =', a);
writeln('Второе число=', b);
writeln('Третье число=', c);
end.



0



0 / 0 / 0

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

Сообщений: 9

11.03.2013, 22:31

 [ТС]

5

Если ввести 1, 2, 3 то получается так:

Наибольшее число=3
Первое число =1
Второе число=2
Третье число=3

Ну а как сделать чтобы выводилось на экран (от наибольшего к наименьшему):

Наибольшее число=3
Третье число=3
Второе число=2
Первое число =1



0



PaniCa.

38 / 38 / 22

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

Сообщений: 95

11.03.2013, 22:55

6

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
  A: array [1..3] of integer;
  i, j, v: integer;
 
begin
  for i := 1 to 3 do
  begin
    write('Введите ', i, ' число: '); 
    readln(A[i]);
  end;
  for i := 1 to 3 do 
    for j := i + 1 to 3 do
      if A[i] < A[j] then
      begin
        v := A[i];
        A[i] := A[j];
        A[j] := v;
      end;
  writeln('Максимальное число: ', A[1]);
end.



1



0 / 0 / 0

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

Сообщений: 9

11.03.2013, 23:30

 [ТС]

7

Работает, но это тоже самое.
Ладно вообщем, оставлю все как есть, спасибо



0



38 / 38 / 22

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

Сообщений: 95

12.03.2013, 00:54

8

Цитата
Сообщение от Innn
Посмотреть сообщение

Работает, но это тоже самое.
Ладно вообщем, оставлю все как есть, спасибо

Простите, это далеко не тоже самое=)



0



Голосование за лучший ответ

Кублен

Оракул

(95421)


10 лет назад

поиск мах в массиве
max:=a [ 1 ];
for i :=2 to 10 do
if a [ i ] > max then max:=a [ i ];

Александр Ширинкин

Искусственный Интеллект

(103525)


10 лет назад

Алгоритм заключается в следующем:

1. Объявить большим 1 число.
2. Перейти к следующему числу
3. Если оно больше объявленного, то заменить объявленное большее на него.
4. Если номер числа меньше 10, то перейти к п. 2
5. Вывести найденное большее.
6. Конец

Дарк

Гуру

(4683)


10 лет назад

Создаете for цикл на 10 проходов, в нем добавляете в массив 10 чисел, вводите переменную (к примеру с: integer) затем создаете еще один цикл и в нем перебираете каждое значение массива по условию
if(ar[ i ] > c) then c:= ar[ i ];

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