![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Переворот строки
Sergei © (2003-01-20 12:21:00)Здравствуйте мастера
Понимаю, что вопрос может показаться достаточно глупым,но всё же
я начинающий пользоват Pascal
Как слелать переворот строки без использования дополнительного
буфера( т.е без доп переменной, или дополнительной позиции в строке)
и возможно ли такое
Спасибо ..
Nikolay M. (2003-01-20 13:20:00) [1]
> MBo © (20.01.03 13:16)
На 3 минуты замешкался :)
Nikolay M. (2003-01-20 13:19:00) [2]?
var
s : string;
i : integer;
begin
s := "ABCDEFGАБВГДЕЖ";
for i := 1 to Length (s) div 2 do
begin
s[i] := Char(Byte(s[i]) + Byte(s[Length (s) - i + 1]));
s[Length (s) - i + 1] := Char(Byte(s[i]) - Byte(s[Length (s) - i + 1]));
s[i] := Char(Byte(s[i]) - Byte(s[Length (s) - i + 1]));
end;
end;
MBo (2003-01-20 13:16:00) [3]rocedure TForm1.Button1Click(Sender: TObject);
var s:string;
i:integer;
begin
s:="abcde";
for i:=1 to Length(s) div 2 do begin
s[i]:=Chr(Ord(s[Length(s)-i+1]) xor Ord(s[i]));
s[Length(s)-i+1]:=Chr(Ord(s[Length(s)-i+1]) xor Ord(s[i]));
s[i]:=Chr(Ord(s[Length(s)-i+1]) xor Ord(s[i]));
end;
label1.caption:=s;
end;
still (2003-01-20 13:00:00) [4]посмотрел.
ну естественно, в итоге используется дополнительный буфер. кто бы сомневался :)
Sergei (2003-01-20 12:55:00) [5]Все всем спасибо
Особенно Still :-))
gsu (2003-01-20 12:55:00) [6]н-р, system._Copy
still (2003-01-20 12:51:00) [7]
> gsu © (20.01.03 12:47)
> >> still © (20.01.03 12:41)
> >> я не знаю, как устроена copy внутри.
> посмотри
где?
gsu (2003-01-20 12:47:00) [8]>> still © (20.01.03 12:41)
>> я не знаю, как устроена copy внутри.
посмотри
>> в явном виде не используются. я так понял вопрос по паскалю, не по внутреннему >> устройтву компилятора и встроенных функций.
тут ты, скорее всего прав
Foxtrot (2003-01-20 12:45:00) [9]Я думаю, что невозможно.
Вот попробуй например сложить из детских кубиков слово "неполучится" а потом не доставая кубиков и не перемещая их сделать "ястичулопен".
still (2003-01-20 12:43:00) [10]можно без copy:
delete(s, 1, length(s) div 2);
still (2003-01-20 12:41:00) [11]я не знаю, как устроена copy внутри.
в явном виде не используются. я так понял вопрос по паскалю, не по внутреннему устройтву компилятора и встроенных функций.
gsu (2003-01-20 12:36:00) [12]>> still ©
copy - неужели в ней не используются дополнительные источники ?
app (2003-01-20 12:28:00) [13]Что задание дали в институте, иначе трудно придумать реальное применение.
still (2003-01-20 12:28:00) [14]можно конечно так:
for i := Length(s) downto 1 do
s := s + s[i];
s := copy (s, length(s) div 2 +1, length(s) div 2);
gsu (2003-01-20 12:23:00) [15]ну уж 1 то дополнительный символ вроде быть обязан