<u>PascalABC.NET 3.3.5, сборка 1644 от 23.03.2018</u>
<u>Внимание! Если программа не работает, обновите версию!</u>
begin
var n:=ReadInteger;
var (s,d,e):=(n div 100, (n div 10) mod 10, n mod 10);
Writeln('Cотни ',s,', десятки ',d,', единицы ',e);
Writeln('Сумма цифр ',s+d+e,', их произведение ',s*d*e);
Writeln('Справа налево: ',100*e+10*d+s);
Writeln('Перестановка сотен в конец: ',100*d+10*e+s)
end.
<u>Пример</u>
328
Cотни 3, десятки 2, единицы 8
Сумма цифр 13, их произведение 48
Справа налево: 823
Перестановка сотен в конец: 283
//PascalABC.Net 3.2
begin
var a: array of integer;
setLength (a, readinteger('Введите размерность массива: '));
var count:=0;
for var i:=0 to length(a)-1 do a[i]:=readinteger ('Введите элемент: ');
for var i:=1 to length(a)-1 do if (a[i-1]*a[i])<0 then count+=1;
write ('Кол-во раз: ', count);
end.
R=A+B+C, где
A=53₁₀,
B=653₈,
C=DA₁₆,
R=R₂
Эту задачу можно решать разными способами; выбор зависит от умения решающего выполнять сложение в той или иной системе счисления. Но в любом варианте, сначала нужно представить А, В, С в какой-то одной системе счисления.
<u>Посмотрим, как это будет выглядеть, если пользоваться привычной нам десятичной системой.</u>
653₈ = 6·8²+5·8¹+3·8⁰ = 6·64+5·8+3 = 427
DA₁₆ = 13·16¹+10·16⁰ = 218
R₁₀ = 53+427+218 = 698
Переводим полученное число в двоичную систему, получая R₂:
698/2=349, остаток 0
349/2=174, остаток 1
174/2=87, остаток 0
87/2=43, остаток 1
43/2 =21, остаток 1
21/2=10, остаток 1
10/2=5, остаток 0
5/2=2, остаток 1
2/2=1, остаток 0
1/2=0, остаток 1
Выписываем остатки в обратном порядке: 1010111010.
Это и есть ответ.
<u>
А теперь допустим, что мы хорошо владеем восьмеричной системой счисления.</u>
1) получим А₈
53/8=6, остаток 5
6/8=0, остаток 6
Выписываем остатки в обратном порядке: А₈=65
2) получим С₈, для чего перейдем сначала в двоичную систему
С₂=1101 1010 (просто заменяем каждую цифру четырьмя двоичными).
А теперь разобьем справа налево полученное значение по три разряда и каждую полученную триаду заменим восьмеричной цифрой.
11 011 010₂ = 332₈
3) Выполним сложение R₈=A₈+B₈+C₈
65 740
+653 +332
------ ------
740 1272
Складывать в восьмеричной системе просто, если знать одну маленькую хитрость. 8 отличается от 10 на 2, поэтому и результат сложения в восьмеричной системе на 2 больше, чем в десятичной, если число превышает 7. Смотрим: 5+3=8, но это в десятичной, а в восьмеричной это на 2 больше, т.е. 10. Поэтому мы пишем 0 и +1 идет в следующий разряд. 6+5=11 и еще +1 от переноса, итого 12. Но в восьмеричной на 2 больше, т.е. 14. 4 пишем. +1 перенос. 6 и +1 от переноса - 7. Вот и получили 740.
4) Мы нашли R₈, переходим к R₂.
Заменяем каждую восьмеричную цифру тремя двоичными:
1272₈=1 010 111 010₂
Мы получили тот же ответ, что и в предыдущем способе расчета.
Так что - дело привычки. Второй вариант кажется "непосвященному" сложнее, но на самом деле в нем меньше арифметики и если нет под рукой калькулятора, то может оказаться и быстрее, и удобнее.
<u><em>Ответ: 1010111010 </em></u>
<h2>Задание 1</h2>
56 % 24 - в результате мы ожидаем получить остаток. Что это значит? Поделим 56 на 24 так, чтобы в ответе получилось целое число. То есть, какое максимальное количество раз взять 24, чтобы НЕ превысить 56? 2 раза - 24 · 2 = 48. А теперь отнимем от 56 полученное число и получим остаток - то есть результат операции 56 % 24: 56 - 48 = 8.
<h3>Ответ</h3>
C
<h2>Задание 2</h2>
Тут стоит знать лишь о порядке выполнения операции. Так же, как и в математике. Сразу отвечу на вопрос, что такое "//". В Python (а судя по всему вопросы именно по нему) есть два оператора деления - "/" (с плавающей точкой, то есть 3.1415, 0.12345...) и "//" (целочисленное деление, то есть, например, при делении 12.3 на 4.58 мы получим не 2.68.., а 2).
a = 10
b = a · 2 + 3 = 10 · 2 + 3 = 20 + 3 = 23
a = b // a = 23 // 10 = 2
b = a + b = 2 + 23 = 25
<h3>Ответ</h3>
A
<h2>Задание 3</h2>
Сразу отбросим программы (B) и (C), поскольку имеют неверный синтаксис программы (после range(.. , ..) должно быть двоеточие). В программе (A) в переменную s записывается сумма УДВОЕННЫХ (2*i) чисел - нам это не подходит. В программе D число проверяется на НЕЧЁТНОСТЬ (i % 2 != 0) - оно нам не подходит. Здесь вообще нет программы, вычисляющей конкретно сумму всех чисел от 1 до 50. Здесь вычисляется либо чётность/нечётность, либо удвоенное произведение.
<h3>Ответ</h3>
Правильного ответа нет
<h2>Задание 4</h2><h3>Ответ</h3>
D