Форум: "Прочее";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];
Внизполучить обратную строку Найти похожие ветки
← →
Lincoln77 (2008-10-23 13:21) [0]Как для строки без использования дополгительной переменной можно получить обратную строку. Т.е. "Test" получить "tseT";
← →
Johnmen © (2008-10-23 13:22) [1]Это лаба или диплом?
← →
JustI (2008-10-23 13:23) [2]
> Это лаба или диплом?
Лаба
← →
Lincoln77 (2008-10-23 13:24) [3]Лаба
← →
Поросенок Винни-Пух © (2008-10-23 13:25) [4]а ведь на дисер потянет
← →
clickmaker © (2008-10-23 13:26) [5]ReverseString() :)
в принципе, можно. Строка - массив символов, каждый имеет код.
Перестановка двух целых без третьего:
a := a xor b;
b := b xor a;
a := a xor b;
← →
Johnmen © (2008-10-23 13:27) [6]
> Lincoln77 (23.10.08 13:24) [3]
> Лаба
Сколько?
← →
Anatoly Podgoretsky © (2008-10-23 15:44) [7]> Johnmen (23.10.2008 13:27:06) [6]
Он один!
← →
Johnmen © (2008-10-23 15:47) [8]
> Anatoly Podgoretsky © (23.10.08 15:44) [7]
> Он один!
Зато партнёр!
← →
Сергей М. © (2008-10-23 15:51) [9]
> Он один!
Если бы!
Совсем недавно, помнится, почти тот же по сути вопрос звучал здесь от еще одного..
остается только догадываться, что за ликбез клонирует лентяев-раздолбаев)
← →
Azize © (2008-10-23 15:52) [10]
n:=length(s);
for i:=n downto 1 do
s:=s+copy(s,1,k);
delete(s,4,1);
Помоему так. набирал тут проверить негде))
← →
БарЛог © (2008-10-23 15:52) [11]clickmaker © (23.10.08 13:26) [5]
> в принципе, можно. Строка - массив символов, каждый имеет код.
Ну так и прочитать ее наоборот :)
← →
Azize © (2008-10-23 15:55) [12]
> n:=length(s);
> for i:=n downto 1 do
> s:=s+copy(s,1,k);
> delete(s,4,1);n:=length(s);
for i:=n downto 1 do
s:=s+copy(s,1,n);
delete(s,n,1);
← →
KSergey © (2008-10-23 15:57) [13]> Azize © (23.10.08 15:52) [10]
> n:=length(s);
> for i:=n downto 1 do
> s:=s+copy(s,1,k);
> delete(s,4,1);
> Помоему так. набирал тут проверить негде))
1) Что такое k?
2) А n и k - это уже не дополнительные переменные? :)
← →
Сергей М. © (2008-10-23 15:59) [14]
> Azize
У тебя как минимум 2 доп.переменных)
Тебе не жаль студня ? Он же сдует этот код глазом не моргнув - и банан по лабе в кондуите ему обеспечен)
← →
Azize © (2008-10-23 16:00) [15]
> У тебя как минимум 2 доп.переменных)
> Тебе не жаль студня ? Он же сдует этот код глазом не моргнув
> - и банан по лабе в кондуите ему обеспечен)
Насколько я понимаю нельзя использовать дополнительные строковые переменные.
← →
Сергей М. © (2008-10-23 16:02) [16]
> Azize © (23.10.08 16:00) [15]
Банан от типа переменной не зависит)
← →
Ega23 © (2008-10-23 16:22) [17]Result дополнительной переменной является, или нет?
← →
clickmaker © (2008-10-23 16:28) [18]> Result дополнительной переменной является, или нет?
конечно )
← →
БарЛог © (2008-10-23 16:41) [19]можно выводить s[254], потом s[253]....s[1]
строка ведь по-любому не длиньш 255 символов :)
← →
wl © (2008-10-23 16:58) [20]Delphi syntax:
function ReverseString(const AText: string): string;
C++ syntax:
extern PACKAGE AnsiString __fastcall ReverseString(const AnsiString AText);
Description
ReverseString returns the string specified by AText with the characters in reverse order.
← →
Dmitry S © (2008-10-23 17:01) [21]
Insert("xxxx", S, 1);
PInteger(@S[1])^ := 1;
while (PInteger(@S[1])^ <= (Length(S) - 4) div 2) do
begin
byte(S[PInteger(@S[1])^ + 4]) := byte(S[PInteger(@S[1])^ + 4]) xor byte(S[Length(S) - PInteger(@S[1])^ + 1]);
byte(S[Length(S) - PInteger(@S[1])^ + 1]) := byte(S[PInteger(@S[1])^ + 4]) xor byte(S[Length(S) - PInteger(@S[1])^ + 1]);
byte(S[PInteger(@S[1])^ + 4]) := byte(S[PInteger(@S[1])^ + 4]) xor byte(S[Length(S) - PInteger(@S[1])^ + 1]);
Inc(PInteger(@S[1])^);
end;
Delete(S, 1, 4);
Интересно сможет объяснить? :)
← →
han_malign © (2008-10-23 17:03) [22]
> function ReverseString(const AText: string): string;
- это чтоб не на пару, а на твердый кол... :))
← →
Azize © (2008-10-23 17:06) [23]
> Dmitry S © (23.10.08 17:01) [21]
А если строка произвольная?
← →
Dmitry S © (2008-10-23 17:09) [24]
> А если строка произвольная?
А что тебя смущает?
← →
han_malign © (2008-10-23 17:11) [25]
> Insert("xxxx", S, 1);
- создается новая(дополнительная) строка...
← →
Dmitry S © (2008-10-23 17:12) [26]
> - создается новая(дополнительная) строка...
Какая?
← →
Azize © (2008-10-23 17:13) [27]
> А что тебя смущает?
Например то что данный пример расчитан на строку из четырёх символов
← →
Dmitry S © (2008-10-23 17:14) [28]
> Например то что данный пример расчитан на строку из четырёх
> символов
Серьезно чтоли? :)
← →
Azize © (2008-10-23 17:15) [29]
> Серьезно чтоли? :)
А что нет? Посмотри внимательнее
← →
Dmitry S © (2008-10-23 17:17) [30]
> Azize © (23.10.08 17:15) [29]
Куда посмотреть-то? Я тебе говорю: нет:)
← →
stas © (2008-10-23 17:18) [31]Azize © (23.10.08 17:15) [29]
Ты хоть проверь для начала.
← →
Azize © (2008-10-23 17:23) [32]
> Dmitry S © (23.10.08 17:17) [30]
Извини прогнал, смутило Delete(S, 1, 4); теперь допёр
> Ты хоть проверь для начала.
проверить не могу дельфи под рукой нет
← →
han_malign © (2008-10-23 17:27) [33]
> Какая?
procedure _LStrInsert{ const source : AnsiString; var s : AnsiString; index : Integer };
asm
....
{ set length of result to length(source) + length(s) }
....
CALL _LStrSetLength
....
procedure _LStrSetLength{ var str: AnsiString; newLength: Integer};
asm
....
@@copyString:
MOV EAX,EDX
CALL _NewAnsiString
....
← →
Ega23 © (2008-10-23 17:54) [34]
> получить обратную строку
поставить к искомой зеркало, перпендикулярно монитору и читать с зеркала.
В условиях только про переменные сказано, про технические приспособления - ни слова. :)
← →
Dimka Maslov © (2008-10-23 18:10) [35]SetLength(B, Length(A));
for i := 1 to Length(A) do A[i] := B[Length(A)-i+1];
← →
Markus13 © (2008-10-23 18:19) [36]во - нашел, когда-то я так это сделал:
function strInv(s:string):string;var k:word;begin
result:="";for k:=length(s)downto 1 do result:=result+s[k];end;
работает))
← →
Dmitry S © (2008-10-23 18:31) [37]
> han_malign © (23.10.08 17:27) [33]
Ну и что? Данной функцией я меняю значение переменной, количество переменных от этого не меняется!
← →
Ega23 © (2008-10-24 10:58) [38]
> Ну и что? Данной функцией я меняю значение переменной, количество
> переменных от этого не меняется!
>
CALL _NewAnsiString
Переменная-то новая - создалась... :)
← →
простой (2008-10-24 14:11) [39]Label1.Caption := ReverseString("Test");
Только в uses добавить StrUtils
← →
han_malign © (2008-10-24 14:49) [40]
> Label1.Caption := ReverseString("Test");
1. было
2. наличие двух строк - "Test" и Label1.Caption - уже говорит о том, что без дополнительных строковых(таки я уже уточняю как правильно должно звучать условие) переменных не обошлось...
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.005 c