Переворот строки

Задача: 

Перевернуть строку, т.е. последние символы должны стать первыми, а первые последними.

Описание переменных: 

s – строка;
n – середина строки;
c – меняемый символ.

Алгоритм решения задачи: 
  1. Найти середину строки.
  2. Перебрать символы строки от начала до ее середины:
    1. очередной символ сохранить в переменной c;
    2. а на его место записать противоположный с конца;
    3. на место противоположного записать сохраненный в c.
Программа на языке Паскаль: 

var
    s: string;
    i,n: byte;
    c: char;
begin
    write('Input string: ');
    readln(s);
    n := length(s) div 2;
    for i := 1 to n do begin
        c := s[i];
        s[i] := s[length(s)-i+1];
        s[length(s)-i+1] := c;
    end;
    writeln(s);
readln
end.

Комментарии

Проще

Так будет проще:

var a,b: string;
	i: integer;
begin
	write('A: -> ');
	readln(a);
	for i:=length(a) downto 1 do 
		b:=b+a[i];
	writeln(b);	
end.

По моему куда легче:for

По моему куда легче:

for i:=length(s) downto 1 do
write(s[i]);

Вы не переворачиваете саму

Вы не переворачиваете саму строку, вы просто выводите её элементы в обратном порядке

А разве не одно и тоже

А разве не одно и тоже получается?

..

Это при выводе одно и то же получается, а если, допустим, требуется ее перевернуть и просто сохранить, без вывода, чтобы, например,впоследствии для чего либо применить, то с вашим методом, она останется такой же как была, поэтому, думаю, такое решение нельзя считать правильным.

не понятно...

Почему n := length(s) div 2; делим на 2, не могу понять...

Нам надо найти серидину, вот

Нам надо найти серидину, вот мы и находим!

Т.к. без деления мы

Т.к. без деления мы перевернём всё, а после середины пойдёт замена искомой строки на вводимую. А с делением идёт ровно до половины, и при нечётном кол-ве элементов центральный останется центральным.