• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Строка наоборот. Упражнение из учебника.

  • Автор темы Автор темы Linka
  • Дата начала Дата начала

Linka

Новые
Регистрация
24 Янв 2010
Сообщения
43
Реакции
1
Баллы
0
Строка наоборот. Упражнение из учебника.

Задание:
Перевернуть введенную строку. (Например из "диск" получится "ксид").

У меня получилось сделать только так:
Код:
program reversed_string;

var s1:string;
   h,i,n:integer;
   g:char;

begin
readln(s1);
n:=Length(s1);
i:=0;
h:=n;
for i:=0 to h do
begin
g:=s1[n];
write(g);
n:=n-1;
	end;

readln;

end.

Все как бы работает. Но как можно иначе сделать ? Чтобы строка "учавствовала", а не один символ ? Спасибо.
 
Последнее редактирование:
Это очень плохое решение.
Сделайте так:
Пройдите по строке от начала до середины, меняя первый элемент с последним, второй с предпоследним, и так далее.
 
Я именно так и начинал, но вот как раз после середины, показывает неверно.. Что надо делать после середины ?

Код:
program reversed_string;

var s1:string;
   i,n:integer;

begin
readln(s1);
n:=Length(s1);
i:=1;

while (i<=n) do
begin
s1[i]:=s1[n];
i:=i+1;
n:=n-1;
	end;
         writeln(s1);
readln;

end.
 
Последнее редактирование:
После середины ничего делать не нужно. Попробуйте на бумаге - поймете.
 
Не понял( Но на бумаге все красиво =)

Получилось только вот так, со второй одинаковой строкой, и еще ондой переменной:
Код:
program reversed_string;

var s1,s2 : string;
  h,i,n : integer;

begin
readln(s1);
n:=Length(s1);
s2:=s1;
i:=1;
h:=n;
while (i<=h) do
begin
s1[i]:=s2[n];
i:=i+1;
n:=n-1;
	end;
         writeln(s1);
readln;

end.
 
Последнее редактирование:
Код:
for i:=1 to length(s) div 2 do
begin
  t:=s[i];
  s[i]:=s[length(s)-i+1];
  s[length(s)-i+1]:=t;
end
 
Назад
Сверху