Подготовка к ЕГЭ сына - школьника (по информатике)
Разработка - Математика и алгоритмы
Вступление
Надеюсь, не один только я готовлюсь к ЕГЭ со своим сыном-школьником! Пора рядом с разделами "Администрирование", "Сообщество" создать раздел "Подготовка к ЕГЭ". (Шутка)
Задания - из кодификатора ЕГЭ-2019 по Информатике, программы составил сын на Pascal. Что он скажет через год-другой, когда опять их увидит ? (Мы знаем).
Задание 1 переделали по комментариям. Мне лично нравится задание 3. Оказывается, из двоичной системы счисления очень удобно переводить в восьмеричную. Каждая триада переходит в одну цифру.
Для четырёх чисел (Рассмотрим самый сложный случай, потому что все остальное делается по аналогии. Авторы-составители ЕГЭ проверяют этим заданием умение создавать алгоритмы с условными операторами):
/////////////////////////////////////////////////////////////////////////////////////////////////// Вариант 1
program minmax_for_four_numbers;
Function MyMin(x, y:double):double;
begin
if x>y then MyMin := y
else
MyMin := x;
end;
Function MyMax(x, y:double):double;
begin
if x>y then MyMax := x
else
MyMax := y;
end;
var a,b,c,d : double;
begin
writeln('Последовательно введите четыре числа, которые необходимо сравнить');
readLn(a,b,c,d);
writeLn('Min: ', MyMin(MyMin(a,b),MyMin(c,d)));
writeLn('Max: ', MyMax (MyMax (a,b),MyMax(c,d)));
end.
/////////////////////////////////////////////////////////////////////////////////////////////////// Вариант 2
var min_num, max_num, ent_num : double;
begin
writeln('Последовательно введите четыре числа, которые необходимо сравнить');
readLn(ent_num);
min_num := ent_num;
max_num := ent_num;
readLn(ent_num);
if ent_num < min_num then min_num := ent_num;
if ent_num > max_num then max_num := ent_num;
readLn(ent_num);
if ent_num < min_num then min_num := ent_num;
if ent_num > max_num then max_num := ent_num;
readLn(ent_num);
if ent_num < min_num then min_num := ent_num;
if ent_num > max_num then max_num := ent_num;
writeln('Max = ', max_num);
writeln('Mix = ', min_num);
end.
/////////////////////////////////////////////////////////////////////////////////////////////////// Вариант 3
program min_max_of_four_numbers_without_arrays_or_cycles;
var
summary, first_number, second_number, third_number, forth_number:real;
begin
writeln('Последовательно введите четыре числа, которые необходимо сравнить');
readln(first_number, second_number, third_number, forth_number);
if (first_number > second_number) and (first_number > third_number) and (first_number > forth_number) then
if (second_number < third_number) and (second_number < forth_number) then
begin
writeln('Max = ', first_number);
writeln('Min = ', second_number);
end
else if (third_number < second_number) and (third_number < forth_number) then
begin
writeln('Max = ', first_number);
writeln('Min = ', third_number);
end
else
begin
writeln('Max = ', first_number);
writeln('Min = ', forth_number);
end;
if (second_number > first_number) and (second_number > third_number) and (second_number > forth_number) then
if (first_number < third_number) and (first_number < forth_number) then
begin
writeln('Max = ', second_number);
writeln('Min = ', first_number);
end
else if (third_number < first_number) and (third_number < forth_number) then
begin
writeln('Max = ', second_number);
writeln('Min = ', third_number);
end
else
begin
writeln('Max = ', second_number);
writeln('Min = ', forth_number);
end;
if (third_number > first_number) and (third_number > second_number) and (third_number > forth_number) then
if (first_number < second_number) and (first_number < forth_number) then
begin
writeln('Max = ', third_number);
writeln('Min = ', first_number);
end
else if (second_number < first_number) and (second_number < forth_number) then
begin
writeln('Max = ', third_number);
writeln('Min = ', second_number);
end
else
begin
writeln('Max = ', third_number);
writeln('Min = ', forth_number);
end;
if (forth_number > first_number) and (forth_number > second_number) and (forth_number > third_number) then
if (first_number < second_number) and (first_number < third_number) then
begin
writeln('Max = ', forth_number);
writeln('Min = ', first_number);
end
else if (second_number < first_number) and (second_number < third_number) then
begin
writeln('Max = ', forth_number);
writeln('Min = ', second_number);
end
else
begin
writeln('Max = ', forth_number);
writeln('Min = ', third_number);
end;
end.
program finding_of_solutions_of_a_quadratic_equation;
var
a, b, c:real;
begin
writeln('Введите коэффициенты квадратного уравнения последовательно, от старшего к свободному члену: ');
readln(a, b, c);
if (a = 0) and (b <> 0) and (c <> 0) then
writeln('Единственный корень = ', -c/b);
if (a = 0) and (b = 0) and (c <> 0) then
writeln('Действительных корней нет');
if (a = 0) and (b = 0) and (c = 0) then
writeln('Корни уравнения - все действительные числа');
if (a <> 0) and (b = 0) and (c = 0) then
writeln('Единственный корень чётной степени = 0');
if (a <> 0) and (b <> 0) and (c = 0) then
begin
writeln('Первый корень = 0');
writeln('Второй корень = ', -b/a);
end;
if (a <> 0) and (b <> 0) and (c <> 0) then
begin
if (b*b-4*a*c) < 0 then
writeln('Действительных корней нет');
if (b*b-4*a*c) = 0 then
writeln('Единственный корень = ', -b/(2*a));
if (b*b-4*a*c) > 0 then
begin
writeln('Первый корень = ', (-b-sqrt(b*b-4*a*c))/(2*a));
writeln('Второй корень = ', (-b+sqrt(b*b-4*a*c))/(2*a));
end;
end;
end.
Перевод числа из десятичной системы счисления в любую другую с основанием меньше 10:
program averse_transform_of_a_number_in_the_number_system_with_basis_less_then_ten;
var
output_number:string;
input_number, basis_of_the_number_system_end:integer;
begin
writeln('Введите последовательно число в десятичной системе и счисления и основание системы счисления, в которую его надо перевести ');
readln(input_number, basis_of_the_number_system_end);
output_number:=' ';
while input_number <> 0 do
begin
output_number:= (input_number mod basis_of_the_number_system_end) + output_number;
input_number := input_number div basis_of_the_number_system_end;
end;
writeln('Искомое число = ', output_number);
end.
Перевод из двоичной в восьмеричную без умножения на основание системы счисления (используется свойство триад). Аналогично возможен перевод из двоичной в шестнадцатеричную (используется свойство тетрад и массив должен быть расширен до 1112 элементов):
program from_binary_into_octal;
var
octo:string;
a:array[0..111]of string;
input_number, mod_number:integer;
begin
writeln('Введите число в двоичной системе счисления ');
readln(input_number);
a[0]:='0';
a[1]:='1';
a[10]:='2';
a[11]:='3';
a[100]:='4';
a[101]:='5';
a[110]:='6';
a[111]:='7';
octo := '';
while input_number <> 0 do
begin
mod_number := input_number mod 1000;
input_number := input_number div 1000;
octo := a[mod_number] + octo;
end;
writeln('Число в восьмеричной системе счисления = ', octo);
end.
Сумма последовательности введённых чисел:
program finding_of_summary_of_the_math_sequence;
var
i, amount_of_numbers, summary, input_number:integer;
begin
summary := 0;
readln(amount_of_numbers);
for i := 1 to amount_of_numbers do
begin
writeln('Введите число последовательности');
readln(input_number);
summary := input_number + summary;
end;
writeln('Сумма последовательности введённых чисел = ', summary);
end.
Сумма элементов массива. То же, что и с числовой последовательностью для получения произведения:
program finding_of_summary_of_the_array;
const
N=9;
var
a:array[0..N] of integer;
i, summary, input_number:integer;
begin
summary := 0;
for i := 0 to N do
begin
writeln('Введите значение элемента массива');
readln (a[i]);
summary := summary + a[i];
end;
writeln('Сумма элементов массива = ', summary);
end.
Проверка числа на простоту:
program finding_of_the_least_prime_divider_of_the_number;
var
identificator:boolean;
i, input_number:integer;
begin
identificator := false;
writeln('Введите число, которое надо проверить на простоту ');
readln(input_number);
for i := 2 to round(sqrt(input_number)) do
if input_number mod i = 0 then
identificator := true;
if identificator = false then
writeln('Простое')
else
writeln('Составное')
end.
Подсчёт количества делителей данного числа:
program finding_of_the_amount_of_dividers_of_the_number;
var
i, amount_of_dividers_of_the_number, input_number:integer;
begin
writeln('Введите число, у которого необходимо подсчитать количество делителей ');
readln(input_number);
amount_of_dividers_of_the_number := 0;
for i := 2 to input_number do
if input_number mod i = 0 then
amount_of_dividers_of_the_number := amount_of_dividers_of_the_number + 1;
writeln('Количество делителей = ', amount_of_dividers_of_the_number);
end.
Заполнение двумерного массива числами, введенными с клавиатуры:
program filling_of_the_two_dimensional_array;
const
N=4;
var
i, j:integer;
a:array[0..N, 0..N]of integer;
begin
for i:=0 to N do
begin
for j:=0 to N do
readln(a[i, j]);
end;
for i :=0 to N do
begin
for j :=0 to N do
write(a[i,j]:5);
writeln;
end;
end.
Заполнение двумерного массива случайными числами в диапазоне:
program filling_of_the_two_dimensional_array_with_random_numbers;
const
N=4;
var
i, j:integer;
a:array[0..N, 0..N]of integer;
begin
for i:=0 to N do
begin
for j:=0 to N do
a[i, j]:=random(1, 99);
end;
for i :=0 to N do
begin
for j :=0 to N do
write(a[i,j]:5);
writeln;
end;
end.
Создание матрицы (Как в популярном фильме. Просто и красиво. Увеличивая диапазон случайных чисел, получаем большее символьное разнообразие)
program the_creation_of_matrix;
var
i,j:integer;
a:array [0..34, 0..10000] of integer;
b:array [0..34, 0..10000] of char;
begin
for i:=0 to 34 do
begin
for j:=0 to 10000 do
a[i, j]:=random(1, 100);
end;
for i:=0 to 34 do
begin
for j:=0 to 10000 do
b[i, j] := Chr(a[i,j] + Ord('0'));
end;
for i :=0 to 34 do
begin
for j :=0 to 10000 do
write(b[i, j]:2);
writeln;
end;
end.
Поиск максимального значения в массиве. Аналогично делается поиск минимального значения, только меняется знак на противоположный при проверке условия:
program finding_of_the_max_in_the_array;
const
N=9;
var
a:array[0..N]of integer;
max, i:integer;
begin
for i:=0 to N do
begin
writeln('Введите значение элемента массива ');
readln(a[i]);
end;
max:=a[0];
for i:=1 to N do
if a[i] > max then
max:=a[i];
writeln('Max = ', max);
end.
Подсчет количества элементов массива, равных данному числу:
program finding_of_the_amount_of_equal_numbers;
const
N=9;
var
a:array[0..N]of integer;
input_number, i, amount_of_equal_numbers:integer;
begin
amount_of_equal_numbers := 0;
writeln('Введите число, которое надо сравнить с элементами массива ');
readln(input_number);
for i := 0 to N do
begin
writeln('Введите значение элемента массива ');
readln(a[i]);
end;
for i := 0 to N do
if a[i] = input_number then
amount_of_equal_numbers := amount_of_equal_numbers + 1;
writeln('Количество равных этому числу элементов массива = ', amount_of_equal_numbers);
end.
Нахождение индекса элемента массива с данным значением:
program finding_of_the_idex_of_the_equal_element_of_the_array;
const
N=9;
var
input_number, i, index:integer;
a:array[0..N]of integer;
begin
writeln('Введите значение элемента массива, индекс которого надо вывести');
readln(input_number);
for i:=0 to N do
begin
writeln('Введите значение элемента массива ');
readln(a[i]);
end;
index := -1;
for i:=0 to N do
if a[i] = input_number then
begin
index := i;
break;
end;
if index = -1 then
writeln('Такого элемента нет')
else
writeln(index);
end.
Вставка и удаление элементов в массиве (со сдвигом вправо):
program input_of_an_element_into_the_array;
const
N=10;
var
a:array[1..N]of integer;
i, index, meaning:integer;
begin
for i:=1 to N do
a[i] := random(1,99);
writeln(a);
writeln('Индекс элемента, вместо которого надо добавить новое значение?');
readln(index);
writeln('Какое значение будет добавлено?');
readln(meaning);
for i:=N downto (index+1) do
a[i] := a[i-1];
a[index] := meaning;
writeln(a);
end.
Перестановка элементов данного массива в обратном порядке:
program reverse_of_the_array;
const
N=10;
var
a:array[1..N]of integer;
i, temporary:integer;
begin
for i:=1 to N do
a[i]:=random(1, 99);
writeln(a);
for i:=1 to N div 2 do
begin
temporary := a[i];
a[i] := a [N-i+1];
a[N-i+1] := temporary;
end;
writeln(a);
end.
program finding_of_two_min_those_may_repeat;
const
N=9;
var
a:array[0..N]of integer;
i, first_min, second_min:integer;
begin
for i := 0 to N do
a[i] := random(1,99);
if a[0]<a[1] then
begin
first_min := a[0];
second_min := a[1];
end
else
begin
first_min := a[1];
second_min := a[0];
end;
for i:=2 to N do
begin
if (first_min > a[i]) and (second_min > a[i]) then
begin
second_min := first_min;
first_min := a[i];
end;
if (first_min > a[i]) and (second_min < a[i]) then
begin
first_min := second_min;
second_min := a[i];
end;
if (first_min < a[i]) and (second_min > a[i]) then
second_min := a[i];
end;
writeln(a);
writeln('Первый минимум = ', first_min, ' Второй минимум = ', second_min);
end.
Вступайте в нашу телеграмм-группу Инфостарт
подготовка ЕГЭ программирование Паскаль Pascal
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Математика и алгоритмы Разработчик 1С 8.3 Абонемент ($m)
Данная внешняя обработка для платформы 1С:Предприятие реализует усовершенствованный алгоритм Левенштейна для вычисления схожести строк с учетом различных лингвистических особенностей русского языка. В отличие от классической реализации, этот алгоритм учитывает фонетические, визуальные и контекстные особенности набора текста.
1 стартмани
07.11.2025 7038 18 InFlach 17
Математика и алгоритмы Запросы Разработчик 1С:Предприятие 8 Бесплатно (free)
Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.
08.07.2024 9199 ivanov660 9
Математика и алгоритмы Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)
На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.
1 стартмани
30.01.2024 16997 stopa85 12
Математика и алгоритмы Бесплатно (free)
Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.
19.10.2023 25268 user1959478 57
Математика и алгоритмы Разное 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)
Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.
2 стартмани
29.09.2023 15754 maksa2005 8
Математика и алгоритмы Инструментарий разработчика Разработчик 1С:Предприятие 8 Россия Абонемент ($m)
Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.
1 стартмани
09.06.2023 25583 13 SpaceOfMyHead 20
Математика и алгоритмы Разработчик 1С:Предприятие 8 Бесплатно (free)
Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.
03.04.2023 17752 RustIG 10
Механизмы платформы 1С Математика и алгоритмы Разработчик 1С:Предприятие 8 Россия Бесплатно (free)
В статье анализируются средства платформы для решения системы линейных уравнений в 1С. Приводятся доводы в пользу некорректной работы встроенных алгоритмов, а значит потенциально некорректного расчета себестоимости в типовых конфигурациях.
23.11.2022 16634 gzharkoj 17
МаксЧисло = -999999999;
Если ПервоеЧисло > МаксЧисло Тогда
МаксЧисло = ПервоеЧисло;
КонецЕсли;
Если ВтороеЧисло > МаксЧисло Тогда
МаксЧисло = ВтороеЧисло;
КонецЕсли;
Если ТретьеЧисло > МаксЧисло Тогда
МаксЧисло = ТретьеЧисло;
КонецЕсли;
Если ЧетвертоеЧисло > МаксЧисло Тогда
МаксЧисло = ЧетвертоеЧисло;
КонецЕсли;
Сообщить("Максимум: " + МаксЧисло); ПоказатьНо ЕГЭ штука такая, им не всегда подходит более простое решение.
Если ПервоеЧисло > ВтороеЧисло Тогда
Если ПервоеЧисло > ТретьеЧисло Тогда
Иначе
КонецЕсли
Иначе
Если ВтороеЧисло > ТретьеЧисло Тогда
Иначе
КонецЕсли
КонецЕсли
МаксЧисло = ПервоеЧисло;
Если ВтороеЧисло > МаксЧисло Тогда
МаксЧисло = ВтороеЧисло;
КонецЕсли;
Если ТретьеЧисло > МаксЧисло Тогда
МаксЧисло = ТретьеЧисло;
КонецЕсли;
Если ЧетвертоеЧисло > МаксЧисло Тогда
МаксЧисло = ЧетвертоеЧисло;
КонецЕсли;
Сообщить("Максимум: " + МаксЧисло); ПоказатьНо меня не отпускает ощущение, что скрыт какой-то подвох в задании. :)
правильные ощущения. Условия: "Нахождение минимума и максимума ..."
(2)
program min_max_of_four_numbers_without_arrays_or_cycles;
var
first_number, second_number, third_number, forth_number, min_number, max_number:real;
begin
writeln('Последовательно введите четыре числа, которые необходимо сравнить');
readln(first_number, second_number, third_number, forth_number);
if (first_number > second_number) then
begin
min_number := second_number;
max_number := first_number;
end
else
begin
min_number := first_number;
max_number := second_number;
end;
if (min_number > third_number) then
min_number := third_number;
if (min_number > forth_number) then
min_number := forth_number;
if (max_number < third_number) then
max_number := third_number;
if (max_number < forth_number) then
max_number := forth_number;
writeln('Max = ', max_number);
writeln('Mix = ', min_number);
end. Показатьvar min_num, max_num, ent_num : double;
begin
writeln('Последовательно введите четыре числа, которые необходимо сравнить');
readLn(ent_num);
min_num := ent_num;
max_num := ent_num;
readLn(ent_num);
min_num := min(ent_num, min_num) ;
max_num := max(ent_num, max_num) ;
readLn(ent_num);
min_num := min(ent_num, min_num) ;
max_num := max(ent_num, max_num) ;
readLn(ent_num);
min_num := min(ent_num, min_num) ;
max_num := max(ent_num, max_num) ;
writeln('Max = ', max_num);
writeln('Mix = ', min_num);
end.
Показатьvar min_num, max_num, ent_num : double;
begin
writeln('Последовательно введите четыре числа, которые необходимо сравнить');
readLn(ent_num);
min_num := ent_num;
max_num := ent_num;
readLn(ent_num);
if ent_num < min_num then min_num := ent_num;
if ent_num > max_num then max_num := ent_num;
readLn(ent_num);
if ent_num < min_num then min_num := ent_num;
if ent_num > max_num then max_num := ent_num;
readLn(ent_num);
if ent_num < min_num then min_num := ent_num;
if ent_num > max_num then max_num := ent_num;
writeln('Max = ', max_num);
writeln('Mix = ', min_num);
end. ПоказатьПо моему это самый простой и короткий способ искать мин и макс а вообще если есть встроенная функция max и min то тогда код получается еще короче т.е. сама функция не нужна
Function Max (a,b)
begin
If a>b then
return a
else
return b;
end;
Procedure FindMaxValue ()
var maxValue,a,b,c,d:int;
begin
writeln('Последовательно введите четыре числа, которые необходимо сравнить');
readln(a, b, c, d);
maxValue = Max (Мax(a,b),Мax(с,d));
end;
var a,b,c,d : double;
begin
writeln('Последовательно введите четыре числа, которые необходимо сравнить');
readLn(a,b,c,d);
writeLn('Max: ', max(max(a,b),max(c,d)));
writeLn('Min: ', min(min(a,b),min(c,d)));
end.
Попарное сравнение может
Перем Первая,Вторая,Третья,Четвертая
?(Первая>Вторая,ИскомоеПервойПары=Первая,ИскомоеПервойПары=Вторая);
?(Третья>Четвертая,ИскомоеВторойПары=Третья,ИскомоеВторойПары=Четвертая);
Максимум = ?(ИскомоеПервойПары>ИскомоеВторойПары,ИскомоеПервойПары,ИскомоеВторойПары);
?(Первая<Вторая,ИскомоеПервойПары=Первая,ИскомоеПервойПары=Вторая);
?(Третья<Четвертая,ИскомоеВторойПары=Третья,ИскомоеВторойПары=Четвертая);
Минимум = ?(ИскомоеПервойПары<ИскомоеВторойПары,ИскомоеПервойПары,ИскомоеВторойПары);
Показать
НачальноеЧисло = Формат(ТекущаяДата(), "ДФ=HHmmss");
ГСЧ = Новый ГенераторСлучайныхЧисел(НачальноеЧисло);
//генерация массива
МассивЧисел = Новый Массив;
РазмерМассива = 9;
Сообщить("Массив:");
Для Сч = 0 По РазмерМассива - 1 Цикл
СлучайноеЧисло = ГСЧ.СлучайноеЧисло(0, 235959);
МассивЧисел.Добавить(СлучайноеЧисло);
Сообщить(СлучайноеЧисло);
КонецЦикла;
//поиск максимальных
ПервоеМакс = 0;
ВтороеМакс = 0;
Для Сч = 0 По РазмерМассива - 1 Цикл
Если МассивЧисел[Сч] > ПервоеМакс Тогда
ВтороеМакс = ПервоеМакс;
ПервоеМакс = МассивЧисел[Сч];
КонецЕсли;
КонецЦикла;
Сообщить("Первое: " + ПервоеМакс);
Сообщить("Второе: " + ВтороеМакс);
Показать
//генерация массива
РазмерМассива = 5;
МассивЧисел = Новый Массив;
МассивЧисел.Добавить(2);
МассивЧисел.Добавить(1);
МассивЧисел.Добавить(5);
МассивЧисел.Добавить(4);
МассивЧисел.Добавить(3);
//поиск второго максимального числа
ПервоеМакс = 0;
ВтороеМакс = 0;
Для Сч = 0 По РазмерМассива - 1 Цикл
Если МассивЧисел[Сч] > ПервоеМакс Тогда
ВтороеМакс = ПервоеМакс;
ПервоеМакс = МассивЧисел[Сч];
КонецЕсли;
КонецЦикла;
Сообщить("Второе: " + ВтороеМакс); ПоказатьИсправленный код:
НачальноеЧисло = Формат(ТекущаяДата(), "ДФ=HHmmss");
ГСЧ = Новый ГенераторСлучайныхЧисел(НачальноеЧисло);
//генерация массива
МассивЧисел = Новый Массив;
РазмерМассива = 9;
Сообщить("Массив:");
Для Сч = 0 По РазмерМассива - 1 Цикл
СлучайноеЧисло = ГСЧ.СлучайноеЧисло(0, 235959);
МассивЧисел.Добавить(СлучайноеЧисло);
Сообщить(СлучайноеЧисло);
КонецЦикла;
//поиск максимальных
ПервоеМакс = 0;
ВтороеМакс = 0;
Для Сч = 0 По РазмерМассива - 1 Цикл
Если МассивЧисел[Сч] > ПервоеМакс Тогда
ВтороеМакс = ПервоеМакс;
ПервоеМакс = МассивЧисел[Сч];
ИначеЕсли МассивЧисел[Сч] > ВтороеМакс Тогда
ВтороеМакс = МассивЧисел[Сч];
КонецЕсли;
КонецЦикла;
Сообщить("Первое: " + ПервоеМакс);
Сообщить("Второе: " + ВтороеМакс);
ПоказатьПример №1 |
|---|
| Массив:
176 513 218 744 43 703 47 903 97 444 101 496 41 990 80 967 58 865 Первое: 218 744 Второе: 176 513 |
Пример №2 |
|---|
| Массив:
37 123 150 385 125 813 55 515 75 692 13 475 160 673 32 414 232 288 Первое: 232 288 Второе: 160 673 |
Да, немногие помнют ужо линейку ДВК и славного её дитёныша БК-0010. Там оно изо всех щелей ;)
procedure minmax(min, max, ent : double)
begin
readLn(ent);
if ent > max them max := ent;
if ent < min them min := ent;
end;
var min_num, max_num, ent_num : double;
begin
writeln('Последовательно введите четыре числа, которые необходимо сравнить');
readLn(ent_num);
min_num := ent_num;
max_num := ent_num;
minmax(min_num, max_num, ent_num);
minmax(min_num, max_num, ent_num);
minmax(min_num, max_num, ent_num);
writeln('Max = ', max_num);
writeln('Mix = ', min_num);
end. Показатьprocedure minmax(i: integer; min, max, ent : double)
begin
if i < 4 then begin
readLn(ent);
if (ent > max) or not i then max := ent;
if (ent < min) or not i then min := ent;
minmax(i + 1, min_num, max_num, ent_num);
end
else begin
writeln('Max = ', max);
writeln('Mix = ', min);
end;
end;
var min_num, max_num, ent_num : double;
begin
writeln('Последовательно введите четыре числа, которые необходимо сравнить');
minmax(0, min_num, max_num, ent_num);
end. Показатьвведите а, б, ц
д = б * б - 4 * а * ц
если д < 0 тогда Нет корней!
корень1 = (-б + корень(д)) / (2 * а)
если д > 0 тогда корень2 = (-б - корень(д)) / (2 * а)
4. Алгоритм "Гномья сортировка".
Гномья сортировка основана на технике, используемой обычным голландским садовым гномом (нидерл. tuinkabouter). Это метод, которым садовый гном сортирует линию цветочных горшков. По существу он смотрит на следующий и предыдущий садовые горшки: если они в правильном порядке, он шагает на один горшок вперёд, иначе он меняет их местами и шагает на один горшок назад. Граничные условия: если нет предыдущего горшка, он шагает вперёд; если нет следующего горшка, он закончил.
Дик Грун
Вот собственно и все описание алгоритма "Гномья сортировка". Что интересно, алгоритм не содержит вложенных циклов, а сортирует весь массив за один проход.
Функция ГномьяСортировка(Знач Массив)
i = 1;
j = 2;
Пока i < Массив.Количество() Цикл // Сравнение < - Сортировка по возрастанию, > - по убыванию
Если Массив[i-1]
i = j;
j = j + 1;
Иначе
Замена = Массив[i];
Массив[i] = Массив[i - 1];
Массив[i - 1] = Замена;
i = i - 1;
Если i = 0 Тогда
i = j;
j = j + 1;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Массив;
КонецФункции ПоказатьВы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 981994
Создание 17.01.19 11:28
Обновление 17.01.19 11:28
Просмотры 9169
Загрузки 0
Рейтинг
12
Комментарии 50
Код открыт Да
Рубрики Математика и алгоритмы
Кому Разработчик
Тип файла Нет файла
Платформа Не имеет значения
Конфигурация Универсальные
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)