АлександровнаВладимирович1424
?>

Запишите алгоритм для исполнительно вычислитель содержащий не более 5 команд: а) получения из числа 3 числа 16 б) получения из числа 1 числа 25 информатика 8 класс

Информатика

Ответы

pashyanaram
Скорее всего, условие задачи сформулировано некорректно, ибо составить программу, содержащую не более пяти команд не получится, и сейчас объясню почему.

Так как нужно из числа 4 получить число 80, то первая команда не может являться "2", в противном случае мы уйдем в отрицательные числа. Тогда первая команда - "1", и теперь нам нужно из числа 20 получить число 80. Рассмотрим несколько случаев, когда последней командой мы получаем число 80.

1 случай.

Если последняя команда - "1", то это возможно, когда предпоследний результат будет равен 16, однако так как наша траектория точно содержит число 20, которое кратно 5, то, применяя далее наши команды, мы всегда будем получать число, кратное 5, а нам нужно получить 16. Противоречие.

2 случай.

Теперь рассмотрим ситуацию, когда последняя команда - "2". То есть предпоследний результат равен 85. Если получать число 85 командой "1", то траектория должна содержать число 17. Из соображений  кратности (см. 1 случай) это невозможно. Значит вторая с конца команда должна являться "2". Аналогично рассуждая, приходим к выводу о том, что и третья, и четвертая команды с конца тоже должны быть "2". То есть наша траектория имеет вид 1*2222, причем на месте "*" должна быть такая траектория команд, которая позволит получить из числа 20 число 100. Ясно, что наименьшая траектория будет 112222, но она содержит 6 команд. Противоречие.

Получается, что из числа 4 получить число 80 программой, которая бы содержала не более 5 команд, действительно не получится. Но если говорить о наименьшей траектории, то 112222 - будет являться ответом на эту задачу.
vardartem876

uses

 Math;

var

 n, r, i, d: Integer;

begin

 Write ('Введите трехзначное число: ');

 ReadLn (n);

 r := 0;

 d := 100;

 if (n >= 100) and (n <= 999) then begin

   for i := 1 to 3 do begin

     r := r + (n mod 10) * d;

     n := n div 10;

     d := d div 10;

   end;

   WriteLn ('Результат = ', r);

 end else

   WriteLn ('Это не трехзначное число');

 ReadLn;

end.

Объяснение:

для 3 цифр в цикле выделяются единицы, десятки, сотни.

умножается на d: в цикле меняется 100, 10, 1

результат суммируется в r

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Запишите алгоритм для исполнительно вычислитель содержащий не более 5 команд: а) получения из числа 3 числа 16 б) получения из числа 1 числа 25 информатика 8 класс
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

vera2job7
neganovaarxi
Yurevna419
nane2924329
violetta152028
Smolkovaya
krtatiana69
rina394992
galinab1111326
Бурмистров_Салагин1074
mospaskrasnogorbukh
Kelena190533
moonligh3560
Olga1509
Dragun1684