Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
4-1206729534
Пётр
2008-03-28 21:38
2010.01.31
Открыть с помощью


2-1260185234
Гипербореец
2009-12-07 14:27
2010.01.31
TDBGrid и логические поля


2-1260081712
AIK
2009-12-06 09:41
2010.01.31
ms SQl server не отображает русские буквы


8-1201820831
cerber
2008-02-01 02:07
2010.01.31
"програмно" нажать ссылку в флеш анимации.


1-1235866689
Misha Uskov
2009-03-01 03:18
2010.01.31
Просмотр JPEG с нестандартным EXIF IFD





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский