Перевод десятичного числа в двоичное выполняется делением: исходное число делим на 2 (т.к. в двоичной системе алфавит состоит из 2 цифр: 0,1), в остатке должно получится либо 1, либо 0, если не получилось, то делим дальше (как в обычном делении) пока не получим в остатке либо 1, либо 0; после этого полученное частное делим на 2, и снова должны получить либо 1, либо 0; и так делаем до того момента, пока в частном не будет 0. Получившиеся остатки записываем в обратном порядке, получается исходное число в двоичной системе (в 8-ричной, 16-ричной системе то же самое, только вместо того, чтобы делить на 2, мы делим либо на 8, либо на 16)
Тут имеется один "подвох" и на него часто ловятся. Можно воспользоваться функций Power для возведения в степень 1/3, либо применить известную формулу Но в обоих случаях используется (явно или скрыто) вычисление логарифма. А мы помним, что логарифм определен только для положительного аргумента. По заданию нужно найти кубический корень из a+b. И этот корень определен для любого вещественного числа, в отличии от логарифма. Вспоминаем:
И только теперь можно писать программу.
// PascalABC.NET 3.2, сборка 1353 от 27.11.2016 // Внимание! Если программа не работает, обновите версию!
begin var a,b,c:real; Read(a,b); c:=a+b; Writeln(sign(c)*power(abs(c),1/3)) end.
const N = 5; var a, S1, S2: Integer; i, Q1, Q2: Byte; begin S1 := 0; Q1 := 0; S2 := 0; Q2 := 0; writeln('Введите ', N, ' чисел:'); for i := 1 to N do begin read(a); if a < 0 then begin S1 := S1 + a; inc(Q1) end; if a > 0 then begin S2 := S2 + a; inc(Q2) end; end; writeln; if Q1 > 0 then begin writeln('Сумма отрицательных чисел: ', S1); writeln('Количество отрицательных: ', Q1) end else writeln('Отрицательных нет'); if Q2 > 0 then begin writeln('Сумма положительных чисел: ', S2); writeln('Количество положительных: ', Q2) end else writeln('Положительных нет') end.