![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать значение функции и получить результат? [D7, XP]
Anastasia © (2009-12-03 16:30:00)Нужно на практической написать функцию которая принимала бы слово и возвращала результат в разных его написаниях (Например: из Вася:ВАСЯ, вася,ВаСя, вАсЯ). Я написала так:
function UpLoweCase(sel:String):String;
var
st1,st2,str:String;
begin
str:=AnsiLowerCase(sel);
sel:=str;
//Всі букви великі
uplow[1]:=AnsiUpperCase(sel);
//Всі букви малі
uplow[2]:=AnsiLowerCase(sel);
//Перша буква велика,інші малі
st1:=Copy(sel,1,1);
Delete(sel,1,1);
st2:=sel;
uplow[3]:=AnsiUpperCase(st1)+st2;
//Перша буква мала,інші великі
sel:=str;
st1:=Copy(sel,1,1);
Delete(sel,1,1);
st2:=sel;
uplow[4]:=AnsiLowerCase(st1)+AnsiUpperCase(st2);
end;
А как вернуть результат из масива в програму незнаю :(
KilkennyCat (2009-12-07 20:36:00) [1]А Корнелий теперь безрукий... эх, женщины нас губят, иногда постепенно...
Sha (2009-12-07 14:01:00) [2]> Anastasia (07.12.09 13:45) [13]
> Спасибо большое,очень выручили ребята! :{}
Если сможешь сама изменить решение так,
чтобы слова выдавались в алфавитном порядке,
тогда действительно можно будет считать,
что помогли.
Anastasia (2009-12-07 13:45:00) [3]Спасибо большое,очень выручили ребята! :{}
Sha (2009-12-06 15:32:00) [4]На самом деле задача очень неплохая.
Позволяет преподу задать кучу дополнительных вопросов.
KilkennyCat (2009-12-06 13:51:00) [5]Что будет, если зададут ту же задачу, но с названиями городов... Банког:
Krungthepmahanakhon Amornrattanakosin Mahintharayutthaya Mahadilokphop Noppharat Ratchathaniburirom Udomratchaniwetmahasathan Amonphiman Awatansathit Sakkathattiyawitsanukamprasit
clickmaker (2009-12-06 13:17:00) [6]> Например слово из 20 букв потребует 2^20 элементов
> Это очень большое число
да, "Арнольд Шварценеггер" лучше не брать.
Настя запарится писать uplow[1]:=... uplow[N]:=
KilkennyCat (2009-12-05 02:04:00) [7]ну хотя бы изменением размера шрифта. намного прикольнее. к тому же, не было терминов строчные-прописные в задании, требовалось лишь разное написание, а сюда входит и вкривь-вкось тоже :)
Германн (2009-12-05 01:54:00) [8]
> KilkennyCat © (04.12.09 23:41) [7]
>
> Я бы реализовал через масштабирования битмапа...
>
2^20 масштабирований битмапа?
:)
KilkennyCat (2009-12-04 23:41:00) [9]Я бы реализовал через масштабирования битмапа...
Плохиш (2009-12-04 17:23:00) [10]
> Anastasia (03.12.09 17:27) [3]
>
> >Anatoly Podgoretsky. s:=UpLoweCase('Вася'); В s и будет
> Result?
Рыдал...
korneley (2009-12-04 00:33:00) [11]
> Sha © (03.12.09 22:31) [4]
Злые Вы :) "ВсёАпЛоу", говорите...
function IDontKnowUpOrLow(const s: AnsiString): AnsiString;
var i : integer;
begin
SetLength(Result, Length(s));
for i := 1 to Length(s) do
if boolean(random(2))
then Result[i] := AnsiUpperCase(s[i])[1]
else Result[i] := AnsiLowerCase(s[i])[1];
end;
Сиквел, как и положено, похуже :)))
ЗЫ: Да, иRandomizeперед всей этой шнягой, не забыть вызвать :)))
ЗЗЫ: пошёл отрывать себе руки :)
Sha (2009-12-03 22:31:00) [12]
function AllUpLow(const s: AnsiString): AnsiString;
var
UpLow: array [0..1] of AnsiString;
Len, Count, Same, No, Place: integer;
p: pAnsiChar;
begin;
Len:=Length(s);
if (Len=0) or (Len>32) then Result:=''
else begin;
UpLow[0]:=AnsiLowerCase(s);
UpLow[1]:=AnsiUpperCase(s);
Same:=-1;
Count:=1;
for Place:=Len downto 1 do begin;
Same:=(Same shl 1) or ord(UpLow[0][Place]=UpLow[1][Place]);
if (Same and 1)=0 then Count:=Count+Count;
end;
SetLength(Result, (Len+2)*Count-2);
integer(p):=integer(Result);
No:=-1;
Count:=0;
repeat;
No:=(No+1) or Same;
if Count>0 then begin;
p[Count]:=',';
p[Count+1]:=' ';
Count:=Count+2;
end;
for Place:=0 to Len-1 do p[Count+Place]:=UpLow[(No shr Place) and 1][1+Place];
Count:=Count+Len;
until No=-1;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin;
Edit2.Text:=AllUpLow(Edit1.Text);
end;
Anastasia (2009-12-03 17:27:00) [13]>Anatoly Podgoretsky. s:=UpLoweCase('Вася'); В s и будет Result?
Anatoly Podgoretsky (2009-12-03 16:41:00) [14]> Anastasia (03.12.2009 16:30:00) [0]
Ну это просто и жестоко, для начала для указаного случая нужен массив не на 4 элемента, а на 16, далее цикл от 2 до 16 и простая конкатенация результата
Result := Result + ', '+ uplow[i];
Например слово из 20 букв потребует 2^20 элементов
Это очень большое число
clickmaker (2009-12-03 16:32:00) [15]delphi help - Function declarations
децкий сад...