Дано натуральное число. Требуется разделить запятыми тройки его цифр (считая справа)....

0 голосов
304 просмотров

Дано натуральное число. Требуется разделить запятыми тройки его цифр (считая справа). Вводится одно натуральное число, не превышающее 10^100. Вывести то же число, разделяя тройки цифр запятыми.


Информатика (17 баллов) | 304 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1599 от 17.12.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s:=ReadlnString(' >');
  Write('-> ');
  var n:=s.Length;
  if n<4 then Writeln(s)<br>  else
    while true do begin
      var p:=n mod 3; p:=p=0?3:p;
      Write(s[:p+1],',');
      s:=s[p+1:];
      n:=s.Length;
      if n=3 then begin Writeln(s); Exit end
      end
end.

Примеры
 > 1231423454123112313211
-> 1,231,423,454,123,112,313,211

 > 123456
-> 123,456

 > 13
-> 13
(150k баллов)
0 голосов

Var s: string;
    i: integer;
begin
  write('число: ');  readln(s);
  i:=length(s)-2;
  repeat
    insert(',',s,i);
    i:=i-3;
  until i<3;<br>  writeln('новое число: ',s);
end.

число: 123456789654321987
новое число: 123,456,789,654,321,987



(9.7k баллов)
0

Какой смысл разделять число на тройки, если в нем меньше 3 цифр?

0

Тогда добавить блок перед repeat: if length(s)>3 then begin repeat ..... until ... end;

0

Каюсь, грешен.

0

А что тут переделывать, то var s: string;
i: integer;
begin
write('число: '); readln(s);
i:=length(s)-3;
while i>0 do
begin
insert(',',s,i+1);
i:=i-3;
end;
writeln('новое число: ',s);
end.