Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1225297567
AlexDan
2008-10-29 19:26
2008.12.28
Округление к боьшему..


3-1212474359
abhtr
2008-06-03 10:25
2008.12.28
Помогите составить запрос.


2-1227078866
olegIvan
2008-11-19 10:14
2008.12.28
Выставить время


15-1225530974
Riply
2008-11-01 12:16
2008.12.28
О пользе закрытия Handle`ов :)


15-1225305335
sniknik
2008-10-29 21:35
2008.12.28
Как узнать сайты на одном IP адресе?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский