Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.02.2013, 07:24
crash94 crash94 вне форума
Прохожий
 
Регистрация: 08.07.2009
Адрес: Архангельск
Сообщения: 26
Версия Delphi: 7
Репутация: 10
По умолчанию Слово и регистр

Здравствуйте.

Подскажите пожалуйста код, чтобы он генерировал слова в разных регистрах.

К примеру:
Цитата:
Слово
СЛово
СЛОво
СЛОВо
СЛОВО
сЛово
СЛОво
и т.д до конца слова

Заранее спасибо
Ответить с цитированием
  #2  
Старый 10.02.2013, 10:03
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

можно найти код для получения комбинаций, навроде [1,2][1,3]...
и увеличить буквы по этим индексам,

ещё есть функция product (исодник на си при клике), можно оттуда скопировать описание, может что и найдётся

---
написал что-то вроде этой функции product
Код:
join(product([['a','A'],['b','B']])[0]) = 'AB'
join(product([['a','A'],['b','B']])[2*2 - 1]) = 'ab'

function product(given: array of smy): aamy;
var givens: aamy; i, j, len, count, step, current_count: integer;
begin
  count := length(given);

  setlength(givens, length(given));
  for i := 0 to high(givens) do
    givens[i] := to_array(given[i]);

  len := 1;
  for i := 0 to high(givens) do
    len := len * length(givens[i]);

  setlength(result, len);
  for i := 0 to high(result) do
    setlength(result[i], count);


  step := 1;
  for j := 0 to count - 1 do
  begin
    current_count := length(givens[j]);
    for i := 0 to len - 1 do
      result[i][j] := givens[j][(i div step) mod current_count];
    step := step * length(givens[j]);
  end;


  for i := 0 to high(givens) do
    setlength(givens[i], 0);
  setlength(givens, 0);
end; 
Вложения
Тип файла: 7z product.7z (1.6 Кбайт, 0 просмотров)
__________________
>woweook<

Последний раз редактировалось Pyro, 10.02.2013 в 10:52.
Ответить с цитированием
Этот пользователь сказал Спасибо Pyro за это полезное сообщение:
crash94 (11.02.2013)
  #3  
Старый 10.02.2013, 11:45
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Получился сильно ламерский код, достойный страниц говнокода, но надёжно рабочий и попроще:
Код:
function Usr(ds: char): char;
begin
    case ds of
'а':Result:='А';'б':Result:='Б';'в':Result:='В';'г':Result:='Г';'д':Result:='Д';
'е':Result:='Е';'ё':Result:='Ё';'ж':Result:='Ж';'з':Result:='З';'и':Result:='И';
'й':Result:='Й';'к':Result:='К';'л':Result:='Л';'м':Result:='М';'н':Result:='Н';
'о':Result:='О';'п':Result:='П';'р':Result:='Р';'с':Result:='С';'т':Result:='Т';
'у':Result:='У';'ф':Result:='Ф';'х':Result:='Х';'ц':Result:='Ц';'ч':Result:='Ч';
'ш':Result:='Ш';'щ':Result:='Щ';'ъ':Result:='Ъ';'ы':Result:='Ы';'ь':Result:='Ь';
'э':Result:='Э';'ю':Result:='Ю';'я':Result:='Я'; else Result:=UpCase(ds);end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
i  : integer;
begin
str:= Edit1.Text;
for i:= 1 to Length(str) do
// for i:= Length(str) downto 1 do
begin
str[i]:= Usr(str[i]);
memo1.Lines.Add(str);
end;
end;
На форму нужно кинуть кнопку, эдит (в нём обрабатываемое слово) и мемо.
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
crash94 (11.02.2013)
  #4  
Старый 10.02.2013, 11:55
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
function AnsiUpperCase(const S: string): string;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо NumLock за это полезное сообщение:
Alegun (10.02.2013), crash94 (11.02.2013)
  #5  
Старый 10.02.2013, 12:02
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

И правда работает,здОрово - тогда нужна только процедура клика кнопки:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
i  : integer;
begin
str:= Edit1.Text;
for i:= 1 to Length(str) do
// for i:= Length(str) downto 1 do
begin
str[i]:= AnsiUpperCase(Str[i])[1];
memo1.Lines.Add(str);
end;
end;
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
crash94 (11.02.2013)
  #6  
Старый 10.02.2013, 12:38
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

тс надо такое, только из букв, а не цифр
__________________
>woweook<
Ответить с цитированием
Этот пользователь сказал Спасибо Pyro за это полезное сообщение:
crash94 (11.02.2013)
  #7  
Старый 10.02.2013, 13:28
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

если слово не длиннее 32 символов можно так:
Код:
var
  s, r: String[32];
  i, j: DWORD;
begin
  s:=Edit1.Text;
  for i:=0 to (1 shl Length(s)-1) do
  begin
    r:='';
    for j:=0 to Length(s)-1 do
      if ((i shr j) and 1)=1 then r:=r+AnsiUpperCase(s[j+1])
      else r:=r+AnsiLowerCase(s[j+1]);
    Memo1.Lines.Add(r);
  end;
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
crash94 (11.02.2013)
  #8  
Старый 11.02.2013, 11:45
crash94 crash94 вне форума
Прохожий
 
Регистрация: 08.07.2009
Адрес: Архангельск
Сообщения: 26
Версия Delphi: 7
Репутация: 10
По умолчанию

Всем спасибо.
То, что нужно
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter