PascalABC.NET 3.4.0, сборка 1670 от 23.05.2018 Внимание! Если программа не работает, обновите версию!
1. Самое простое "арифметическое" решение
begin var n:=Abs(ReadInteger('n=')); // защита от отрицательных чисел Writeln(n div 100,',',(n div 10) mod 10,',',n mod 10) end.
Пример n= 318 3,1,8
2. "Арифметическое" решение с циклом, цифры в обратном порядке
begin var n:=Abs(ReadInteger('n=')); // защита от отрицательных чисел while n>10 do begin Write(n mod 10,','); n:=n div 10 end; Writeln(n mod 10) end.
Пример n= 318 8,1,3
3. "Арифметическое" решение с массивом
begin var n:=Abs(ReadInteger('n=')); // защита от отрицательных чисел var a:array[1..3] of integer; var i:=3; while n>0 do begin a[i]:=n mod 10; i-=1; n:=n div 10 end; Writeln(a[1],',',a[2],',',a[3]) end.
Пример n= 318 3,1,8
4. Решение с символьной строкой
begin Abs(ReadInteger('n=')).ToString.ToCharArray.Println(',') end.
О четности или нечетности вещественного числа можно говорить лишь если оно не имеет дробной части. В этом случае оно приводится к целому числу. Я не знаю, зачем дано абсолютно глупое требование не использовать условный оператор, но выполнить его можно. Надо умножать число на абсолютную величину остатка от его деления на 2. Если число четное, остаток будет нулевым, нечетное - единичным. Поэтому результатом умножения будет или само нечетное число, или ноль. И можно все подряд складывать.
CLS DIM n AS INTEGER INPUT "n=", n DIM i AS INTEGER, k AS INTEGER, x AS SINGLE, s AS SINGLE, i AS INTEGER s = 0 FOR i = 1 TO n INPUT "->", x s = s + x * (ABS(INT(x)) MOD 2) NEXT i PRINT "s = ", s
Внимание! Если программа не работает, обновите версию!
1. Самое простое "арифметическое" решение
begin
var n:=Abs(ReadInteger('n=')); // защита от отрицательных чисел
Writeln(n div 100,',',(n div 10) mod 10,',',n mod 10)
end.
Пример
n= 318
3,1,8
2. "Арифметическое" решение с циклом, цифры в обратном порядке
begin
var n:=Abs(ReadInteger('n=')); // защита от отрицательных чисел
while n>10 do begin
Write(n mod 10,',');
n:=n div 10
end;
Writeln(n mod 10)
end.
Пример
n= 318
8,1,3
3. "Арифметическое" решение с массивом
begin
var n:=Abs(ReadInteger('n=')); // защита от отрицательных чисел
var a:array[1..3] of integer;
var i:=3;
while n>0 do begin
a[i]:=n mod 10;
i-=1;
n:=n div 10
end;
Writeln(a[1],',',a[2],',',a[3])
end.
Пример
n= 318
3,1,8
4. Решение с символьной строкой
begin
Abs(ReadInteger('n=')).ToString.ToCharArray.Println(',')
end.
Пример
n= 318
3,1,8