Stack Overflow на русском Asked on January 31, 2021
Написать программу которая на вход получает число произвольной длины,
а на выходе выдаёт число в прямом виде и число наоборот на следующей
строке. Решить наиболее рациональным способом.Пример на вход: 7652 На выводе: 7 6 5 2 2 5 6 7
есть решение через строки и без пробелов – их могу доделать но задача не на это
program revoptimal;
var a:int64;
begin
readln(a);
writeln(a);
writeln(ReverseString(inttostr(a)));
end.
Если вы делаете эту программу в PascalABC.NET и подаваемое на вход значение не нужно проверять, т.е. оно точно является натуральным числом, то можно всё очень сильно упростить:
begin
var S : String;
ReadLn(S);
foreach var C in S do Print(C);
foreach var C in S.ToCharArray.Reverse do Print(C);
WriteLn;
end.
Если, всё же, необходимо использовать именно числовые переменные без преобразований в строку, то можно сделать вот так:
begin
var N := ReadLnInteger;
var D := 1;
while D * 10 < N do D *= 10;
repeat
Print(N mod (D * 10) div D);
D := D div 10;
until D = 0;
repeat
Print(N mod 10);
N := N div 10;
until N = 0;
end.
Answered by Jurii on January 31, 2021
Могут быть синтаксические ошибки. Давно на нём не писал
function rk(a: integer, d: integer)
begin
if(a > 0)
begin
if d = 1
begin
Write(a Mod 10)
end
rk(a Div 10, d);
if d = 2
begin
Write(a Mod 10)
end
end
end
begin
rk(7652, 1);
WriteLn('');
rk(7652, 2);
WriteLn('');
end
Answered by Mrak on January 31, 2021
// Функция возведения 10 в степень n
function Extend(n: integer): integer;
var
i: integer;
r: integer;
begin
r := 1;
for i := 1 to n do
r := r * 10;
Result := r;
end;
var
x: string;
y: integer;
z: string;
m: integer;
i: integer;
begin
// Читаем введенное число
ReadLn(x);
// Переводим его в целочисленный тип
y := StrToInt(x);
WriteLn('input: ', y);
z := '';
for i := 0 to Length(x) - 1 do
begin
// Берем число по модулю 10 от остатка от деления на степень 10
// В виде строки
z := z + IntToStr((y Div Extend(i)) Mod 10);
// В виде числа
m := m + ((y Div Extend(i)) Mod 10) * Extend(Length(x) - (i + 1));
end;
WriteLn('output: ', z);
WriteLn('output: ', m);
end.
Answered by slippyk on January 31, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP