Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.31;
Скачать: CL | DM;

Вниз

Как передать значение функции и получить результат?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
15-1259206910
koha!
2009-11-26 06:41
2010.01.31
Что лучше?


6-1211636100
may be I am noob...
2008-05-24 17:35
2010.01.31
Подключение


2-1260206153
Aleks
2009-12-07 20:15
2010.01.31
Текст кодировка


15-1259282883
Дмитрий С
2009-11-27 03:48
2010.01.31
Вопрос по настройке DNS


11-1210698126
AndreyRus
2008-05-13 21:02
2010.01.31
Unit KOLadd implicitly imported into package MirrorKOLPackage