Форум: "Начинающим";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];
ВнизКак передать значение функции и получить результат? Найти похожие ветки
← →
Anastasia (2009-12-03 16:30) [0]Нужно на практической написать функцию которая принимала бы слово и возвращала результат в разных его написаниях (Например: из Вася:ВАСЯ, вася,ВаСя, вАсЯ). Я написала так:
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;
А как вернуть результат из масива в програму незнаю :(
← →
clickmaker © (2009-12-03 16:32) [1]delphi help - Function declarations
децкий сад...
← →
Anatoly Podgoretsky © (2009-12-03 16:41) [2]> Anastasia (03.12.2009 16:30:00) [0]
Ну это просто и жестоко, для начала для указаного случая нужен массив не на 4 элемента, а на 16, далее цикл от 2 до 16 и простая конкатенация результата
Result := Result + ", "+ uplow[i];
Например слово из 20 букв потребует 2^20 элементов
Это очень большое число
← →
Anastasia (2009-12-03 17:27) [3]>Anatoly Podgoretsky. s:=UpLoweCase("Вася"); В s и будет Result?
← →
Sha © (2009-12-03 22:31) [4]
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;
← →
korneley © (2009-12-04 00:33) [5]
> 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
перед всей этой шнягой, не забыть вызвать :)))
ЗЗЫ: пошёл отрывать себе руки :)
← →
Плохиш © (2009-12-04 17:23) [6]
> Anastasia (03.12.09 17:27) [3]
>
> >Anatoly Podgoretsky. s:=UpLoweCase("Вася"); В s и будет
> Result?
Рыдал...
← →
KilkennyCat © (2009-12-04 23:41) [7]Я бы реализовал через масштабирования битмапа...
← →
Германн © (2009-12-05 01:54) [8]
> KilkennyCat © (04.12.09 23:41) [7]
>
> Я бы реализовал через масштабирования битмапа...
>
2^20 масштабирований битмапа?
:)
← →
KilkennyCat © (2009-12-05 02:04) [9]ну хотя бы изменением размера шрифта. намного прикольнее. к тому же, не было терминов строчные-прописные в задании, требовалось лишь разное написание, а сюда входит и вкривь-вкось тоже :)
← →
clickmaker © (2009-12-06 13:17) [10]> Например слово из 20 букв потребует 2^20 элементов
> Это очень большое число
да, "Арнольд Шварценеггер" лучше не брать.
Настя запарится писать uplow[1]:=... uplow[N]:=
← →
KilkennyCat © (2009-12-06 13:51) [11]Что будет, если зададут ту же задачу, но с названиями городов... Банког:
Krungthepmahanakhon Amornrattanakosin Mahintharayutthaya Mahadilokphop Noppharat Ratchathaniburirom Udomratchaniwetmahasathan Amonphiman Awatansathit Sakkathattiyawitsanukamprasit
← →
Sha © (2009-12-06 15:32) [12]На самом деле задача очень неплохая.
Позволяет преподу задать кучу дополнительных вопросов.
← →
Anastasia (2009-12-07 13:45) [13]Спасибо большое,очень выручили ребята! :{}
← →
Sha © (2009-12-07 14:01) [14]> Anastasia (07.12.09 13:45) [13]
> Спасибо большое,очень выручили ребята! :{}
Если сможешь сама изменить решение так,
чтобы слова выдавались в алфавитном порядке,
тогда действительно можно будет считать,
что помогли.
← →
KilkennyCat © (2009-12-07 20:36) [15]А Корнелий теперь безрукий... эх, женщины нас губят, иногда постепенно...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c