Вопросы

Здравствуйте, прошу прощения, если я плохо пишу, я не очень хорошо говорю по-русски!

 

Мне нужно отсортировать массив по возрастанию, но у меня возникли проблемы!
 

#define Loop(%0,%1,%2) for(new %0 = %2; %0 < %1; %0++)

stock SortRandomEventRank(ordem_crescente=1)
{
    new total;
    if(ordem_crescente)
    {
        Loop(i, MAX_PLAYERS, 0)
        {
            if(RandomEventRank[i][RER_Total])
            {
                Loop(s, MAX_PLAYERS, 0)
                {
                    if(RandomEventRank[i][RER_Total] < RandomEventRank[s][RER_Total])
                    {
                        total = RandomEventRank[i][RER_Total];
                        RandomEventRank[i][RER_Total] = RandomEventRank[s][RER_Total];
                      
                        RandomEventRank[s][RER_Total] = total;
                    }
                }
            }
        }
    }

}

 

Поделиться сообщением


Ссылка на сообщение

7 ответов на этот вопрос

  • 0
#define Loop(%0,%1,%2for(new %0 = %2; %0 < %1; %0++)

stock SortRandomEventRank(ordem_crescente = 1)
{
    if(ordem_crescente)
    {
        // Используем пузырьковую сортировку для простоты
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            for(new s = 0; s < MAX_PLAYERS - 1; s++)
            {
                // Проверка на корректность индексов и значений
                if(RandomEventRank[s][RER_Total] > RandomEventRank[s + 1][RER_Total])
                {
                    // Меняем местами
                    new total = RandomEventRank[s][RER_Total];
                    RandomEventRank[s][RER_Total] = RandomEventRank[s + 1][RER_Total];
                    RandomEventRank[s + 1][RER_Total] = total;
                }
            }
        }
    }
}

Для сортировки, проверки на RandomEventRank[RER_Total] не требуются

Отредактировано пользователем DAYREK

Поделиться сообщением


Ссылка на сообщение
  • 0
10 минут назад, DAYREK сказал:

#define Loop(%0,%1,%2) for(new %0 = %2; %0 < %1; %0++)

 

stock SortRandomEventRank(ordem_crescente = 1)

{

    if(ordem_crescente)

    {

        // Use bubble sort for simplicity

        for(new i = 0; i < MAX_PLAYERS; i++)

        {

            for(new s = 0; s < MAX_PLAYERS - 1; s++)

            {

                // Check for correctness of indices and values

                if(RandomEventRank [RER_Total] > RandomEventRank [s + 1] [RER_Total])

                {

                    // Swap places

                    new total = RandomEventRank [RER_Total];

                    RandomEventRank [RER_Total] = RandomEventRank [s + 1] [RER_Total];

                    RandomEventRank [s + 1] [RER_Total] = total;

                }

            }

        }

    }

}

 

Вы использовали chatgpt, и этот скрипт не работает! Я перепробовал несколько скриптов через chatgps, и ни один из них не работает! Организация должна быть организована в порядке возрастания!

Поделиться сообщением


Ссылка на сообщение
  • 0

@JR_Junior Try this code
 

#define Loop(%0,%1,%2for(new %0 = %2; %0 < %1; %0++)

stock SortRandomEventRank(ordem_crescente = 1)
{
    new temp[MAX_PLAYERS][RER_FIELDS];

    Loop(i, MAX_PLAYERS, 0)
    {
        Loop(j, MAX_PLAYERS - 10)
        {
            if ((ordem_crescente && RandomEventRank[j][RER_Total] > RandomEventRank[j + 1][RER_Total]) ||
                (!ordem_crescente && RandomEventRank[j][RER_Total] < RandomEventRank[j + 1][RER_Total]))
            {
                Loop(k, RER_FIELDS, 0)
                {
                    temp[0][k] = RandomEventRank[j][k];
                    RandomEventRank[j][k] = RandomEventRank[j + 1][k];
                    RandomEventRank[j + 1][k] = temp[0][k];
                }
            }
        }
    }
}

 

Отредактировано пользователем Andrey Markelov

Поделиться сообщением


Ссылка на сообщение
  • 0

@Andrey Markelov Еще один скрипт ChatGPT! Это не работает, я уже перепробовал все эти скрипты, сгенерированные chatgpt!

Поделиться сообщением


Ссылка на сообщение
  • 0

Уехал с цикла в цикле

Сразу видно настоящих скриптеров

Топик-стартер, объясните пожалуйста, в чем задача? Что вы делаете?

Отредактировано пользователем Web

Поделиться сообщением


Ссылка на сообщение
  • 0

@Web 
Хорошо, я создаю систему событий, и одно из этих событий связано с наименьшим временем, которое потребовалось игроку для завершения события. Поэтому организация массива должна быть возрастающей, где позиция игрока определяется по наименьшему времени (в секундах):

 

RandomEventRank[5][RER_Total] = 600;
RandomEventRank[17][RER_Total] = 300;
RandomEventRank[8][RER_Total] = 400;
RandomEventRank[10][RER_Total] = 100;
RandomEventRank[3][RER_Total] = 599;
RandomEventRank[850][RER_Total] = 50;
RandomEventRank[900][RER_Total] = 1000;
RandomEventRank[999][RER_Total] = 1001;

SortRandomEventRank(1);
    
Loop(i,MAX_PLAYERS,0) printf("%d: %d",i+1,RandomEventRank[i][RER_Total]);

На первый взгляд все работает, но вот в чем проблема:
1: 50
2: 100
3: 300
4: 400
5: 599
6: 600
7: 1000
8: 0
9: 0
10: 1001
11: 0
12: 0
...

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@JR_Junior написал вам и сделал комментарии. Используйте эту систему, внедряя уже к вам. Это самая простая «сортировка»

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент