// Простая программа на C++, вычисляющая произведение всех натуральных чисел из отрезка [N,M], где N и M - натуральные числа
#include <iostream>
#include <string>
using namespace std;
int main()
{
int N, M, product, i;
cout << "Введите натуральное число N" << endl;
cin >> N;
cout << "Введите натуральное число M, M >= N" << endl;
cin >> M;
if (N > M) { throw std::invalid_argument("M должно быть больше или равно N"); }
product = N;
for(i = N + 1; i <= M; i++) { product = product * i;}
cout << "Произведение натуральных чисел из отрезка [N,M]:" << endl;
cout << product << endl;
}
program jumping;
var
i, j, temp: integer;
B: array [1..10] of integer;
begin
for i := 1 to 10 do
read(B[i]);
for i := 1 to 9 do
for j := 1 to 10 - i do
if (B[j] < B[j + 1]) then
begin
temp := B[j];
B[j] := B[j + 1];
B[j + 1] := temp;
end;
writeln('Первое место: ', B[1]);
writeln('Второе место: ', B[2]);
writeln('Третье место: ', B[3]);
end.
Объяснение:
program jumping; // Название программы
var
i, j, temp: integer; // Целочисленные переменные:
i - переменная счетчик для цикла forj - переменная счетчик для цикла fortemp - переменная для временного хранения значений массиваB: array [1..10] of integer; // Целочисленный массив из 10 чисел
begin // Начало программы
for i := 1 to 10 do // Идём с первого по десятый элементы массива
read(B[i]); // Ввод значений массива
// Сортировка массива в порядке убывания
for i := 1 to 9 do // Идём с первого по девятый элементы массива
for j := 1 to 10 - i do // Идём с первого по 10 - i элементы массива
if (B[j] < B[j + 1]) then // Если последующий элемент больше предыдущего
begin // Начало цикла
temp := B[j]; // Временная переменная = значению массива B с индексом j
B[j] := B[j + 1]; // Значение массива B с индексом j = значению массива B с индексом j + 1
B[j + 1] := temp; // Значение массива B с индексом j = значению временной переменной
end; // Конец цикла
writeln('Первое место: ', B[1]); // Вывод ответа
writeln('Второе место: ', B[2]); // Вывод ответа
writeln('Третье место: ', B[3]); // Вывод ответа
end. // Конец программы
нужно действовать от обратного
возьмём число 18 и попробуем получить из него число 2. Так как мы начинаем алгоритм с конца то и действия превратятся в противоположные: -1 станет 1, *2 станет /2.
Разделим 18 на 2 = 9 (команда 2)
Прибавим 1 к 9 = 10 (команда 1)
Разделим 10 на 2 = 5 (команда 2)
Прибавим 1 к 5 = 6 (команда 1)
Разделим 6 на 2 = 3 (команда 2)
Получили порядок команд: 21212, но так как мы действовали от обратного нужно реверсировать порядок команд (записать команды в обратном порядке). В нашем случае изначальный порядок равен реверсированному (21212 = 21212), поэтому в этом нет необходимости.
В итоге получен алгоритм: 21212