Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Уроки/Статьи/Функции/Задачи » [ЗАДАЧА] Изменить число (Чтобы цифры в нем были по убыванию)
[ЗАДАЧА] Изменить число
_wS_ Дата: Пятница, 21.06.2013, 22:07:31 | Сообщение # 1
Код
public OnPluginStart()
{
     new x = GetRandomInt(13417, 95718);

     // Допустим x равен 28496
     // Ваша задача преобразовать число так, чтобы оно имело такой вид: 98642 (цифры по убыванию)
}
 
Scarface_slv Дата: Суббота, 22.06.2013, 13:03:06 | Сообщение # 2
Сообщений: 749
Репутация: 61 [ +/- ]
Может так? Можно наверно как то проще но я хз
Код

public OnPluginStart()
{
             new x = GetRandomInt(13417, 95718);
             new String:Numerik[5], String:copy[2], array[5], size;
             IntToString(x, Numerik, 6); size = strlen(Numerik);     
             for (new i = 0; i < size; i++)      
             {
                     strcopy(copy, 2, Numerik[i]);
                     array[i] = StringToInt(copy);      
             }
             SortIntegers(array, size, Sort_Descending);      
             for (new i = 0; i < size; i++)      
             {
                    IntToString(array[i], copy, 2);      
                    Numerik[i] = copy[0];
             }
             PrintToServer("%d", StringToInt(Numerik));      
}


Сообщение отредактировал Scarface_slv - Суббота, 22.06.2013, 16:22:07
 
TEIN Дата: Суббота, 22.06.2013, 13:08:08 | Сообщение # 3
Сообщений: 550
Репутация: 73 [ +/- ]
Как-то так.

Прикрепления: wS-2-.sp(1Kb)
 
_wS_ Дата: Суббота, 22.06.2013, 13:13:50 | Сообщение # 4
klas
 
хвостег Дата: Среда, 08.06.2016, 21:36:27 | Сообщение # 5
Сообщений: 161
Репутация: 53 [ +/- ]
Быстрый и простой вариант...
Код
public OnPluginStart()
{
    new num = GetRandomInt(13417, 95718);
    
    PrintToServer("Input: %d", num);
    
    decl String:buffer[10];
    IntToString(num, buffer, sizeof(buffer));
    
    new temp, len = strlen(buffer);
    for(new i = 0; i < len; i++)
    {
  for(new j = 0; j < len-i-1; j++)
  {
   if(buffer[j] < buffer[j+1])
   {
    temp = buffer[j+1];
    buffer[j+1] = buffer[j];
    buffer[j] = temp;
   }
  }
    }
    num = StringToInt(buffer);
    
    PrintToServer("Output: %d", num);
}

Прикрепления: nums.sp(0Kb)
 
GodlikE145 Дата: Четверг, 09.06.2016, 07:22:43 | Сообщение # 6
Сообщений: 33
Репутация: 9 [ +/- ]
Работает при любом Х. Сложность алгоритма: O(2*n+10), где n - кол-во цифр в числе.
Код

new nums[10], x;
x = GetRandomInt(13417, 95718);
while(x>0)
{
    nums[x%10]++;
    x/=10;
}
for(new i = 9; i>=0; i--)
{
     while(nums[i])
     {
          x = x*10+i;
          nums[i]--;
     }
}
PrintToServer("%d", x);
 
Форум » SourceMod - Counter Strike Source && CS GO » Уроки/Статьи/Функции/Задачи » [ЗАДАЧА] Изменить число (Чтобы цифры в нем были по убыванию)
Страница 1 из 11
Поиск: