String26. Дано целое число $$N (> 0)$$ и строка $$S$$. Преобразовать строку $$S$$ в строку длины $$N$$ следующим образом: если длина строки $$S$$ больше $$N$$, то отбросить первые символы, если длина строки $$S$$ меньше $$N$$, то в ее начало добавить символы «.» (точка).
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
program String26; var N,i:integer; S:string; begin Write('N:'); Readln(N); Write('S:'); Readln(S); if length(S)>N then delete(S,1,length(S)-N) else if length(S)<N then for i:=length(S) to N-1 do s:='.'+s; writeln(S); end. |
Решение от Newton:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
program String26; const Filler = '.'; var Line : String; Limit : byte; begin writeln('Enter a line: '); readln(Line); write('Enter the limit: '); readln(Limit); if Length(Line) > Limit then delete(Line, 1, Length(Line) - Limit) else while Length(Line) < Limit do insert(Filler, Line, 1); writeln(Line); end. |
Другие задачи из раздела String можно посмотреть здесь.
Вариация на ту же тему:
В своё решение добавил else. И ваше решение поместил в шапку.
У вас ошибка точки добавляются в конец, а нужно в начало, s := ‘.’ + s
Спасибо, поправил.
Было:
Стало: