Автоматическое генерация слова со всеми "версиями" регистра.

 

Несколько дней не могу найти ресурс или прогу, если знает кто напишите *.

В общем мне нужно, что бы получить все варианты написания одного слова с разным вариантом регистра, например: чашка, чАшка, ЧаШКа и т.д.

 
Aleksey Rodionov: нужно получить все варианты написания слова с разным вариантом регистра, например: чашка, чАшка, ЧаШКа ...
#property strict
string Слово="чАШа"; // Начальное написание безразлично
void start()
{
   for(int НомерКомбинации=0; НомерКомбинации<pow(2, StringLen(Слово)); НомерКомбинации++)
   {
      for(int Позиция=0; Позиция<StringLen(Слово); Позиция++)
      if()

      Alert("НомерКомбинации=",НомерКомбинации, "  ", Слово);
   }
}

сейчас схожу в аптеку и доделаю. Осталось 2 строки исправить: if() и следующую. Профитом поделитесь?

 
e33:

сейчас схожу в аптеку и доделаю. Осталось 2 строки исправить: if() и следующую. Профитом поделитесь?

=) Это для другого проекта, не знаю к кому обратится уже, просто почему то если залогинелся через ПК с выделенной линией интернет UserName подтягивается корректно под которым зашел, а если подключится по WiFi к локальному серверу то UserName под которым залогинелся уже не подтягивается, а тянется например "вАся", если с другого ноута по wifi и логин другой то "васЯ"

 хотя должно непосредственно имя пользователя тянутся. Такая беда если по WiFi подключатся.

 

#property strict
string Слово="чаша"; // Начальное написание
void start()
{
   string Буква;
   for(int НомерКомбинации=0; НомерКомбинации<pow(2, StringLen(Слово)); НомерКомбинации++)
   {
      string Слово2="";
      for(int Позиция=0; Позиция<StringLen(Слово); Позиция++)
      { 
         Буква=StringSubstr(Слово,Позиция,1);
         if((НомерКомбинации & (int)pow(2,Позиция))>0) StringToUpper(Буква);
         Слово2=Слово2+Буква;
      }
      Alert(Слово2,"  ",НомерКомбинации);
   }
}
Наверное надо на Ява-Скрипт ?
 
Бухгалтера подтянулись на форум?
 

Привет!


А причем тут Чашка?

 
Можно пойти более простым путем - преобразовать все символы к нижнему или верхнему регистру, сравнивая результат с эталоном.
 
Ihor Herasko:
Можно пойти более простым путем - преобразовать все символы к нижнему или верхнему регистру, сравнивая результат с эталоном.
продемонстрируйте
 

StringToCharArray дописывает один лишний символ в массив. 

//+------------------------------------------------------------------+
//|                                                       Test_1.mq5 |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property script_show_inputs
input string word="Old";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   uchar arr_Lower[];
   Print("");
   Print("Длина слова: ",StringLen(word));
   Print("StringToCharArray -> ",StringToCharArray(word,arr_Lower));
   int size=ArraySize(arr_Lower);
   for(int i=0;i<size;i++)
     {
      Print("#",i,": ",CharToString(arr_Lower[i]));
     }
  }


Результат: длина слова - 3 символа, а в массив пишется четыре:

Test_1 (EURUSD,M15)     
Test_1 (EURUSD,M15)     Длина слова: 3
Test_1 (EURUSD,M15)     StringToCharArray -> 4
Test_1 (EURUSD,M15)     #0: O
Test_1 (EURUSD,M15)     #1: l
Test_1 (EURUSD,M15)     #2: d
Test_1 (EURUSD,M15)     #3: 


Последний символ - это "терминальный ноль". Вопрос: он всегда пишется? Или есть нюансы?

 
e33:
продемонстрируйте

Тут, как бы, и демонстрировать нечего ))

#property script_show_inputs

input string      i_sValue = "ЧаШкА";  // Слово "чашка" в любом регистре

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   string sTemp = i_sValue;
   if (!StringToLower(sTemp))
   {
      Alert("Ошибка преобразования строки. №", GetLastError());
      return;
   }
   
   Alert((sTemp == "чашка")? "Правильно" : "Неправильно");
   
}