Добрый день, товарищи!
В этой публикации я расскажу вам, как найти максимальное число из заданной пользователем последовательности. Для этого мы проведем небольшое первое знакомство с массивами ( более детально они будут разобраны в будущих публикациях ).
Напишем нам задачу:
Разработать программу определения максимума из последовательности чисел. Все числа вводятся пользователем.
Хорошо. Значит исходя из задания можем предположить, что сначала нужно организовать ввод этой самой последовательности пользователем.
В конце статьи будет ссылка на скачивание кода с Яндекс.Диска!
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 с Яндекс.Диска
Данный человек всегда открыт для обсуждения контента и общения с подписчиками, если найдутся какие либо вопросы то я обязательно постараюсь ответить на них.
По возможности я попросил бы подписаться и оценить публикацию. Сейчас это критически важно для развития канала. Так то!
Доброго вам всем здоровьица в эти трудные времена!
Содержание:
-
Плохо понимаете, как решать задания на кодирование графической информации?
-
Условие задачи
-
Решение задачи
-
Выводы
-
Примеры условий реальных задач, встречающихся на ЕГЭ по информатике
-
Хотите разбираться в задачах графического содержания? Тогда жду вас на уроке
Плохо понимаете, как решать задания на кодирование графической информации?
Всем привет! Меня зовут Александр и я профессиональный репетитор по информатике, программированию, математике и базам данных.
Скоро экзамен ЕГЭ по информатике и ИКТ, а у вас не получается правильно решать задания, ориентированные на кодирование графической информации? Не понимаете, как найти максимальное количество цветов в палитре? Если, да, то записывайтесь ко мне на частные занятия, ну, или внимательно читайте данный материал.
Мои индивидуальные занятия проходят в различных территориальных форматах, а именно:
Настоятельно рекомендую остановить свой выбор на дистанционной форме обучения. Это удобно, недорого и крайне эффективно.
Условие задачи
Автоматическая камера производит растровые изображения размером $200 × 256$ пикселей. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Объём файла с изображением не может превышать $65$ Кбайт без учёта размера заголовка файла.
Какое максимальное количество цветов можно использовать в палитре?
Решение задачи
В первую очередь нужно выяснить, о каком типе графики идет речь! Напомню, что школьная программа подготовки к ЕГЭ по информатике предполагает знакомство учащихся с $3$-мя видами компьютерной графики:
В условии прямо говорится о растровой графике: “производит растровые изображения“. И это замечательно! Потому что этот вид компьютерной графики самый простой в анализе и расчетах.
Напомню, чем больше количество бит отводится на кодирование $1$-го пиксела, то есть, чем больше глубина цвета, тем большим количеством различных цветов этот пиксель можно раскрасить.
Значит, наша первостепенная задача – определить глубину цвета данного растрового изображения, а затем воспользоваться формулой Хартли для получения окончательного ответа.
Из постановки задачи нам известны:
-
габариты растрового изображения, выраженные в пикселях ($200 • 256$);
-
общий информационный вес изображения, выраженный в Кбайт ($65$ Кбайт).
Внимательный читатель обратит внимание на следующий фрагмент текста: “не может превышать $65$ Кбайт“. Т е в условии не говорится о том, что размер файла строго равен $65$ Кбайт, а лишь о том, что он не превышает этой величины.
Но, как было замечено ранее, нужно стремиться к тому, чтобы каждый пиксель кодировался как можно большим целым числом бит, следовательно, размер исходного графического файла в последующих расчетах будем принимать наибольшим, т е равным $65$ Кбайт.
$<Память на $1$ пиксель> = frac{<Общий размер памяти>}{<Общее количество пикселей>}$, [бит]
Для упрощения последующих математических выкладок сделаем следующее:
-
Разложим все заданные натуральные числа на простые множители (факторизация числа).
-
Переведем единицы измерения информации из [Кбайт] в [бит].
$200 = 2 · 2 · 2 · 5 · 5 = 2^3 · 5^2$
$256 = 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 = 2^8$
$65 [Кбайт] = 5 · 13 [Кбайт] = 5 * 13 * 2^{13} [бит]$
Не забывайте, что в $1$-ом Кбайте $8 192$ или $2^{13}$ бит. Подставляем разложенные величины в формулу:
$I = frac{5 · 13 · 2^{13} [бит]}{2^3 · 5^2 · 2^8} = frac{5 · 13 · 2^{13} [бит]}{2^{11} · 5^2} = frac{4 · 13}{5} = frac{52}{5} = 10.4$, [бит]
Но, глубина цвета должна выражаться целым числом бит, поэтому округляем “вниз” до ближайшего целого: $10.4 approx 10$ [бит].
Вывод: на кодирование каждого пикселя заданного растрового изображения отводится ровно $10$ бит информации.
Двигаемся дальше! В условии задачи нам сообщили, что “Для кодирования цвета каждого пикселя используется одинаковое количество бит“, т е в данном случае для кодирования графической информации применяют равномерный код.
А сейчас пришла пора обратиться к формуле Хартли, т к именно благодаря ей мы сможешь получить различное количество цветов.
В общем виде эта формула имеет вид: $I = K · log_2 N$, где:
$N$ – мощность алфавита | $K$ – длина сообщения | $I$ – количество информации в сообщении в битах |
Сразу обратимся к вопросу в постановке задачи: “Какое максимальное количество цветов можно использовать в палитре?”. Этот вопрос можно переформулировать так: “Какое максимальное количество цветов можно использовать в изображении?“..
А лучше переформулируем еще точнее и понятнее: “Какое максимальное количество цветов может принимать каждый пиксель заданного изображения?“. Т к все пиксели растровой картинки структурно идентичны друг другу, т е имеют одинаковую глубину цвета, то нам достаточно разобрать $1$ конкретный пиксель.
Поэтому в формуле Хартли величина $K$ будет равна $1$ и формула примет сокращенную форму: $I = log_2 N$.
$I$ – глубина цвета, и мы уже ее посчитали ранее: $I$ = 10 [бит].
$N$ – мощность алфавита, но при кодировании графической информации мощностью выступает именно все разнообразие цветов, в которые можно закрасить пиксель, т е по факту, $N$ – та величина, которую нам нужно отыскать.
Выражаем из сокращенной формулы Хартли величину $N$, используя свойства логарифма: $N = 2^I = 2^{10} = 1 024$, различных цвета.
Именно это значение нам следует выписать в бланк ответов официального экзамена ЕГЭ по информатике. Выписывается только число без указаний каких-либо единиц измерения информации.
Ответ: $1 024$.
Выводы
Во-первых, внимательно несколько раз прочитайте условие задачи. Во-вторых, определите вид компьютерной графики, т е кодирования какого типа изображения происходит. В $99.99%$ случаев речь идет о растровых картинках.
В-третьих, в обязательном порядке научитесь пользоваться формулой Хартли. Да, эта формула достаточно скользкая и с $1$-го раза мало, кто понимает, о чем она в принципе. Для этого придется вникать в тему “Измерение количества информации“.
В-четвертых, знайте наизусть большинство степеней двоек. Желательно на интервале от $2^0$ до $2^{20}$. В-пятых, умейте варьировать единицы измерения информации, т е заменять [Кбайты] на [байты] или [Мбайты], а [байты] переводить в [биты] и т.п.
Примеры условий реальных задач, встречающихся на ЕГЭ по информатике
чуть позже!
Хотите разбираться в задачах графического содержания? Тогда жду вас на уроке
Если после прочтения данного материала у вас остались какие-либо вопросы, недопонимание, то смело задавайте их в комментариях или пишите мне на электронный адрес.
Также можете кидать условия задач графической тематики в мою группу в вк. Обязательно я их рассмотрю, напишу соответствующее решение, а также отсниму видео на свой Youtube-канал. Кстати, можете подписаться на мой канал прямо сейчас!
Ну, и напоследок, познакомьтесь с отзывами клиентов, прошедших подготовку под моим началом. Все они добились поставленных целей и значительно окрепли в информационных технологиях.
На мой экспертный взгляд, задание из ЕГЭ по информатике, ориентированное на кодирование графической информации в общем и на нахождение максимального количества цветов в частности, является проходным. Оценивается оно всего в $1$ первичный балл, и этот балл вы должны в обязательном порядке получить!
Задача 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.
ОГЭ по информатике – Задание 4 (Карта городов)
Добрый день! Сегодня посмотрим, как “бороться” с 4 заданием из ОГЭ по …
Категория: Информатика Подкатегория: ОГЭ
Дата: 27-11-2022 в 15:44:40
1
Перейти к содержанию
Найти максимальное число из трех
Просмотров 44.2к. Обновлено 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
На занятии происходит знакомство с логическим типом 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
]
Потренируйтесь в решении задач по теме, щелкнув по пиктограмме: