Заметим, чтобы сгенерировать строку, нужно знать только предыдущую строку. Будет генерировать по порядку от 1 до n-ой строки.
Программа:
var n, i: integer; cur_str, prev_str: string; begin read(n); prev_str := ''; for i := 1 to n do {Генерируем строки по порядку от 1 до n} begin str(i, cur_str); {Записываем в текущую строку её порядковый номер} cur_str := prev_str + prev_str + cur_str; {Дописываем предыдущую строку два раза в начало} prev_str := cur_str; {Записываем текущею строку вместо предудущей} end; writeln(cur_str); end.
Var a: array of integer; var i: byte; var b: boolean; begin b: =true; setlength(a,8); var n: =0; writeln('введите число: '); readln(i); var d: =i; while i< > 0 do begin a[n]: =i mod 2; i: =i div 2; inc(n); end; setlength(a,n); for i: =0 to n-1 do begin if n=0 then begin write(0); break; end; swap(a[i],a[n-1]); write(a[i]); end; for i: =1 to n-1 do begin if n=0 then break; if a[i-1]< > a[i] then begin b: =false; break; end; end; if (b=false) then write(' = ',d,' это не палиндром') else write(' = ',d,' это палиндром'); end.
Программа:
var
n, i: integer;
cur_str, prev_str: string;
begin
read(n);
prev_str := '';
for i := 1 to n do {Генерируем строки по порядку от 1 до n}
begin
str(i, cur_str); {Записываем в текущую строку её порядковый номер}
cur_str := prev_str + prev_str + cur_str; {Дописываем предыдущую строку два раза в начало}
prev_str := cur_str; {Записываем текущею строку вместо предудущей}
end;
writeln(cur_str);
end.