На занятии происходит знакомство с логическим типом 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
]
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 | ||||
|
|
Аналогично осуществляется поиск минимального из чисел.
Для лучшего понимания темы поиска максимального или минимального значения предлагаем посмотреть видео урок:
Задача Max 1. В танцевальном клубе участвуют 10 представительниц женского пола. Определите, может ли самая старшая из них быть матерью самой младшей (в таком случае разница в возрасте может составлять не менее 17 лет).
[Название файла: task_max1.pas
]
Задача Max 2. Найти минимальное и максимальное из 10 введенных чисел и вывести сумму их порядковых номеров.
[Название файла: task_max2.pas
]
Задача Max 3. Средняя продолжительность жизни лабораторной мыши – 10 лет. Найдите максимальный показатель продолжительности жизни у пяти белых мышей и у пяти мышей-альбиносов. У каких мышей показатель уровня жизни выше?
[Название файла: task_max3.pas
]
Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:
Добрый день, товарищи!
В этой публикации я расскажу вам, как найти максимальное число из заданной пользователем последовательности. Для этого мы проведем небольшое первое знакомство с массивами ( более детально они будут разобраны в будущих публикациях ).
Напишем нам задачу:
Разработать программу определения максимума из последовательности чисел. Все числа вводятся пользователем.
Хорошо. Значит исходя из задания можем предположить, что сначала нужно организовать ввод этой самой последовательности пользователем.
В конце статьи будет ссылка на скачивание кода с Яндекс.Диска!
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 с Яндекс.Диска
Данный человек всегда открыт для обсуждения контента и общения с подписчиками, если найдутся какие либо вопросы то я обязательно постараюсь ответить на них.
По возможности я попросил бы подписаться и оценить публикацию. Сейчас это критически важно для развития канала. Так то!
Доброго вам всем здоровьица в эти трудные времена!
Перейти к содержанию
Найти максимальное число из трех
Просмотров 44.3к. Обновлено 29 октября 2021
Пусть a, b, c – переменные, которым присваиваются введенные числа, а переменная m в конечном итоге должна будет содержать значение наибольшей переменной. Тогда алгоритм программы сведется к следующему:
- Сначала предположим, что переменная a содержит наибольшее значение. Присвоим его переменной m.
- Если текущее значение m меньше, чем у b, то следует присвоить m значение b. Если это не так, то не изменять значение m.
- Если текущее значение m меньше, чем у c, то присвоить m значение c. Иначе ничего не делать.
Данную задачу можно решить и без использования четвертой переменной, однако программа будет логически сложнее:
- Если a больше b, то проверить больше ли a, чем c. Если это так, то максимальное число содержит переменная a. Если a больше b, но при этом меньше c, то максимальным является значение c.
- Иначе (когда a меньше b) сравнить значения b и c. Большее из них и есть максимальное.
Пример кода Pascal
максимальное среди трех чисел паскаль
// 1-й способ:var
a,b,c,max: integer;
begin
readln(a,b,c);
max := a;
if max < b then max := b;
if max < c then max := c;
writeln(max);
end.// 2-й способ:
var
a,b,c: integer;
begin
readln(a,b,c);
if a > b then
if a > c then writeln(a)
else writeln(c)
else
if b > c then writeln(b)
else writeln(c);
end.
Пример кода Язык Си
// 1-й вариант:#include
main() {
int a,b,c,m;
scanf("%d%d%d",&a,&b,&c);
m = a;
if (m < b) m = b;
if (m < c) m = c;
printf("%dn", m);
}// 2-й вариант:
#include
main() {
int a,b,c;
scanf("%d%d%d",&a,&b,&c);if (a > b)
if (a > c) printf("%dn", a);
else printf("%dn", c);
else
if (b > c) printf("%dn", b);
else printf("%dn", c);
}
Пример кода Python
максимальное среди трех чисел Python
# 1-й вариант:a = int(input())
b = int(input())
c = int(input())m = a
if m < b:
m = b
if m < c:
m = cprint(m)
# 2-й вариант:
a = int(input())
b = int(input())
c = int(input())if a > b:
if a > c:
print(a)
else:
print(c)
else:
if b > c:
print(b)
else:
print(c)
Пример кода КуМир
| 1-й вариант:алг максимум из трех
нач
цел a, b, c, m
ввод a, b, c
m := a
если b > m то m := b все
если c > m то m := c все
вывод m
кон| 2-й вариант:
алг максимум из трех
нач
цел a, b, c
ввод a, b, c
если a > b то
если a > c то
вывод a
иначе
вывод c
все
иначе
если b > c то
вывод b
иначе
вывод c
все
все
кон
Пример кода Basic-256
# 1-й вариант:input a
input b
input c
max = a
if max < b then max = b
if max < c then max = c
print max# 2-й вариант:
input a
input b
input c
if a > b then
if a > c then
print a
else
print c
endif
else
if b > c then
print b
else
print c
endif
endif
В этой статье мы научимся находить максимальное значение в списке на Python. Для всестороннего понимания вопроса мы рассмотрим использование некоторых встроенных функций, простые подходы, а также небольшие реализации известных алгоритмов.
Сначала давайте вкратце рассмотрим, что такое список в Python и как найти в нем максимальное значение или просто наибольшее число.
В Python есть встроенный тип данных под названием список (list). По своей сути он сильно напоминает массив. Но в отличие от последнего данные внутри списка могут быть любого типа (необязательно одного): он может содержать целые числа, строки или значения с плавающей точкой, или даже другие списки.
Хранимые в списке данные определяются как разделенные запятыми значения, заключенные в квадратные скобки. Списки можно определять, используя любое имя переменной, а затем присваивая ей различные значения в квадратных скобках. Он является упорядоченным, изменяемым и допускает дублирование значений. Например:
list1 = ["Виктор", "Артем", "Роман"]
list2 = [16, 78, 32, 67]
list3 = ["яблоко", "манго", 16, "вишня", 3.4]
Далее мы рассмотрим возможные варианты кода на Python, реализующего поиск наибольшего элемента в списке, состоящем из сравниваемых элементов. В наших примерах будут использоваться следующие методы/функции:
- Встроенная функция
max()
- Метод грубой силы (перебора)
- Функция
reduce()
- Алгоритм Heap Queue (очередь с приоритетом)
- Функция
sort()
- Функция
sorted()
- Метод хвостовой рекурсии
№1 Нахождение максимального значения с помощью функции max()
Это самый простой и понятный подход к поиску наибольшего элемента. Функция Python max()
возвращает самый большой элемент итерабельного объекта. Ее также можно использовать для поиска максимального значения между двумя или более параметрами.
В приведенном ниже примере список передается функции max в качестве аргумента.
list1 = [3, 2, 8, 5, 10, 6]
max_number = max(list1)
print("Наибольшее число:", max_number)
Наибольшее число: 10
Если элементы списка являются строками, то сначала они упорядочиваются в алфавитном порядке, а затем возвращается наибольшая строка.
list1 = ["Виктор", "Артем", "Роман"]
max_string = max(list1, key=len)
print("Самая длинная строка:", max_string)
Самая длинная строка: Виктор
№2 Поиск максимального значения перебором
Это самая простая реализация, но она немного медленнее, чем функция max()
, поскольку мы используем этот алгоритм в цикле.
В примере выше для поиска максимального значения нами была определена функция large()
. Она принимает список в качестве единственного аргумента. Для сохранения найденного значения мы используем переменную max_
, которой изначально присваивается первый элемент списка. В цикле for каждый элемент сравнивается с этой переменной. Если он больше max_
, то мы сохраняем значение этого элемента в нашей переменной. После сравнения со всеми членами списка в max_
гарантировано находится наибольший элемент.
def large(arr):
max_ = arr[0]
for ele in arr:
if ele > max_:
max_ = ele
return max_
list1 = [1,4,5,2,6]
result = large(list1)
print(result) # вернется 6
№3 Нахождение максимального значения с помощью функции reduce()
В функциональных языках reduce()
является важной и очень полезной функцией. В Python 3 функция reduce()
перенесена в отдельный модуль стандартной библиотеки под названием functools. Это решение было принято, чтобы поощрить разработчиков использовать циклы, так как они более читабельны. Рассмотрим приведенный ниже пример использования reduce()
двумя разными способами.
В этом варианте reduce()
принимает два параметра. Первый — ключевое слово max, которое означает поиск максимального числа, а второй аргумент — итерабельный объект.
from functools import reduce
list1 = [-1, 3, 7, 99, 0]
print(reduce(max, list1)) # вывод: 99
Другое решение показывает интересную конструкцию с использованием лямбда-функции. Функция reduce()
принимает в качестве аргумента лямбда-функцию, а та в свою очередь получает на вход условие и список для проверки максимального значения.
from functools import reduce
list1 = [-1, 3, 7, 99, 0]
print(reduce(lambda x, y: x if x > y else y, list1)) # -> 99
№4 Поиск максимального значения с помощью приоритетной очереди
Heapq — очень полезный модуль для реализации минимальной очереди. Если быть более точным, он предоставляет реализацию алгоритма очереди с приоритетом на основе кучи, известного как heapq. Важным свойством такой кучи является то, что ее наименьший элемент всегда будет корневым элементом. В приведенном примере мы используем функцию heapq.nlargest()
для нахождения максимального значения.
import heapq
list1 = [-1, 3, 7, 99, 0]
print(heapq.nlargest(1, list1)) # -> [99]
Приведенный выше пример импортирует модуль heapq и принимает на вход список. Функция принимает n=1
в качестве первого аргумента, так как нам нужно найти одно максимальное значение, а вторым аргументом является наш список.
№5 Нахождение максимального значения с помощью функции sort()
Этот метод использует функцию sort()
для поиска наибольшего элемента. Он принимает на вход список значений, затем сортирует его в порядке возрастания и выводит последний элемент списка. Последним элементом в списке является list[-1]
.
list1 = [10, 20, 4, 45, 99]
list1.sort()
print("Наибольшее число:", list1[-1])
Наибольшее число: 99
№6 Нахождение максимального значения с помощью функции sorted()
Этот метод использует функцию sorted()
для поиска наибольшего элемента. В качестве входных данных он принимает список значений. Затем функция sorted()
сортирует список в порядке возрастания и выводит наибольшее число.
list1=[1,4,22,41,5,2]
sorted_list = sorted(list1)
result = sorted_list[-1]
print(result) # -> 41
№7 Поиск максимального значения с помощью хвостовой рекурсии
Этот метод не очень удобен, и иногда программисты считают его бесполезным. Данное решение использует рекурсию, и поэтому его довольно сложно быстро понять. Кроме того, такая программа очень медленная и требует много памяти. Это происходит потому, что в отличие от чистых функциональных языков, Python не оптимизирован для хвостовой рекурсии, что приводит к созданию множества стековых фреймов: по одному для каждого вызова функции.
def find_max(arr, max_=None):
if max_ is None:
max_ = arr.pop()
current = arr.pop()
if current > max_:
max_ = current
if arr:
return find_max(arr, max_)
return max_
list1=[1,2,3,4,2]
result = find_max(list1)
print(result) # -> 4
Заключение
В этой статье мы научились находить максимальное значение из заданного списка с помощью нескольких встроенных функций, таких как max()
, sort()
, reduce()
, sorted()
и других алгоритмов. Мы написали свои код, чтобы попробовать метод перебора, хвостовой рекурсии и алгоритма приоритетной очереди.
Задача 1
Напишите программу, которая в последовательности натуральных чисел определяет максимальное число. Программа получает на вход количество чисел в последовательности, а затем сами числа.
Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число – максимальное число.
Решение:
Считаем сначала максимальным числом самое маленькое из возможных, т.е. ноль. Потом, перебираем все числа – если встретилось число большее, чем максимальное в данный момент, то оно и становится максимальным.
Var a, i, max, n: integer; begin Read(n); max:=0; for i:=1 to n do begin read(a); if a>max then max:=a; end; Writeln(max); end.
Нахождение МИНИМАЛЬНОГО числа.
Задача 2
Напишите программу, которая в последовательности натуральных чисел определяет минимальное число. Программа получает на вход количество чисел в последовательности, а затем сами числа.
Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число – минимальное число.
Решение:
Считаем сначала минимальным числом самое большое из возможных, т.е. 30000. Потом, перебираем все числа – если встретилось число меньшее, чем минимальное в данный момент, то оно и становится минимальным.
Var a, i, min, n: integer; begin Read(n); min:=30000; for i:=1 to n do begin read(a); if a>min then min:=a; end; Writeln(min); end.
Нахождение МАКСИМАЛЬНОГО числа КРАТНОГО 7.
Задача 3
Напишите программу, которая в последовательности натуральных чисел определяет максимальное число, кратное 7. В последовательности всегда имеется число, кратное 7. Программа получает на вход количество чисел в последовательности, а затем сами числа.
Количество чисел не превышает 1000. Введённые числа не превышают 30 000.
Программа должна вывести одно число – максимальное число, кратное 7.
Решение:
Считаем сначала максимальным числом самое маленькое из возможных, т.е. ноль. Потом, перебираем все числа – если встретилось число кратное 7 (остаток от деления на 7 равен нулю), И большее, чем максимальное в данный момент, то оно и становится максимальным.
Var a, i, max, n: integer; begin Read(n); max:=0; for i:=1 to n do begin read(a); if (a>max) and (a mod 7 = 0) then max:=a; end; Writeln(max); end.
Нахождение МАКСИМАЛЬНОГО числа, ОКАНЧИВАЮЩЕЕСЯ на 6.
Задача 4
Напишите программу, которая в последовательности натуральных чисел определяет максимальное число, оканчивающееся на 6. В последовательности всегда имеется число, оканчивающееся на 6. Программа получает на вход количество чисел в последовательности, а затем сами числа.
Количество чисел не превышает 1000. Введённые числа не превышают 30 000.
Программа должна вывести одно число – максимальное число, оканчивающееся на 6.
Решение:
В начале, максимальное число считается самым маленьким из всех возможных. Т.е. нулю. Затем перебираем числа в массиве. Если нам встретилось число, ОКАНЧИВАЮЩЕЕСЯ на 6 (Т.е. остаток от деления на 10 равен 6), И это число больше, чем наше максимальное в данный момент, то у нас становится новое максимальное – это число.
Var a, i, max, n: integer; begin Read(n); max:=0; for i:=1 to n do begin read(a); if (a>max) and (a mod 10 = 6) then max:=a; end; Writeln(max); end.