Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 19.02.2010, 01:58   #1 (permalink)
Linka
Member
 
Аватар для Linka
 
Регистрация: 24.01.2010
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 26
По умолчанию Строка наоборот. Упражнение из учебника.

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

У меня получилось сделать только так:
Код:
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.
Все как бы работает. Но как можно иначе сделать ? Чтобы строка "учавствовала", а не один символ ? Спасибо.

Последний раз редактировалось Linka; 19.02.2010 в 02:24
Linka вне форума   Ответить с цитированием

Старый 19.02.2010, 01:58
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Можете поискать в данных темах решение вашего вопроса

Командная строка Bash
Адресная строка браузера
Строка-пропеллер
Бегущая строка на PIC16F628A
Жесткий диск с SATA разьемом был подключен наоборот

Старый 19.02.2010, 02:51   #2 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Это очень плохое решение.
Сделайте так:
Пройдите по строке от начала до середины, меняя первый элемент с последним, второй с предпоследним, и так далее.
Long Cat вне форума   Ответить с цитированием
Старый 19.02.2010, 03:15   #3 (permalink)
Linka
Member
 
Аватар для Linka
 
Регистрация: 24.01.2010
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 26
По умолчанию

Я именно так и начинал, но вот как раз после середины, показывает неверно.. Что надо делать после середины ?

Код:
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.

Последний раз редактировалось Linka; 19.02.2010 в 03:21
Linka вне форума   Ответить с цитированием
Старый 19.02.2010, 04:27   #4 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

После середины ничего делать не нужно. Попробуйте на бумаге - поймете.
Long Cat вне форума   Ответить с цитированием
Старый 19.02.2010, 05:36   #5 (permalink)
Linka
Member
 
Аватар для Linka
 
Регистрация: 24.01.2010
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 26
По умолчанию

Не понял( Но на бумаге все красиво =)

Получилось только вот так, со второй одинаковой строкой, и еще ондой переменной:
Код:
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.

Последний раз редактировалось Linka; 19.02.2010 в 05:40
Linka вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 19.02.2010, 05:43   #6 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Код:
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
Long Cat вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:59.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.