Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Sortowanie tablicy


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 A może sma?

    Godlike

  • Power User

Reputacja: 546
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 29.04.2012 20:15

Siemanko.
Mam tablice z liczbami naturalnymi. Chce ją posortować malejąco (tzn. indeks 0 zawiera największy element);
To co? SortCustom1D i jedziemy? No nie do końca...
Oprócz tej tablicy podczas sortowania, dwie inne (string i integer) muszą "podążać" za pierwszą.
Mógłby mi ktoś podrzucić pomysł jak to zrobić...? Próbowałem sortowania bąbelkowego (może jakieś inne użyć?) w taki sposób:

new i = MAX_TOP;
while(i > 0)
{
for(new j = 0; j < MAX_TOP - 2; j++)
{
if(jumps_top[j] < jumps_top[j+1])
{
new temp_name_top[31], temp_jumps_top, temp_level_top;

copy(temp_name_top, 31, name_top[j]);
temp_jumps_top = jumps_top[j];
temp_level_top = level_top[j];

copy(name_top[j], 31, name_top[j+1]);
jumps_top[j] = jumps_top[j+1];
level_top[j] = level_top[j+1];

copy(name_top[j+1], 31, temp_name_top);
jumps_top[j+1] = temp_jumps_top;
level_top[j+1] = temp_level_top;
}
}
i -= 1;
}


Co robię źle? ;F
Generalnie to tablica jest małych rozmiarów (mniejsza niż 15 elementów)
  • +
  • -
  • 0

#2 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 29.04.2012 22:49

wiem ze to wymaga dosc dlugiego i intensywnego myslenia ale oto jestem i ci pomoge

http://amxx.pl/dokum...31/sortcustom1d

masz calbacka to przy zwracaniu wartosci przy okazji sobie zamien wartosci z innych tablic

ewentualnie piszesz wlasną interpretacje jednego z algorytmów sortujących najlatwiej zrobic bombelkowe :D
  • +
  • -
  • 1
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#3 A może sma?

    Godlike

  • Autor tematu
  • Power User

Reputacja: 546
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 29.04.2012 23:14

Edit2: Bo jednak tego... Skąd mam wziąć indeks porównywanych elementów tablicy...?
  • +
  • -
  • 0

#4 A może sma?

    Godlike

  • Autor tematu
  • Power User

Reputacja: 546
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 01.05.2012 00:15

To co z tymi indeksami? :F
  • +
  • -
  • 0

#5 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 01.05.2012 00:42

SortCustom2D?
Ogólnie nie bardzo rozumiem co chcesz dokładnie osiągnąć, ale może ten kod trochę Ci ułatwi przyswojenie takiego sortowania.
public Fragi() {
new sort[33][2];
new count, i;

for(i=1; i<=32; ++i) {
if(is_user_connected(i)) {
sort[count][0] = get_user_frags(i);
sort[count++][1] = i;
}
}
SortCustom2D(sort, count, "sortuj");

for(i=0; i<count; ++i)
client_print(0, print_chat, "Fragi: %i | ID: %i", sort[i][0], sort[i][1]);
}

public sortuj(elem1[], elem2[]) {
if(elem1[0] > elem2[0])
return -1;
else if(elem1[0] < elem2[0])
return 1;

return 0;
}

  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 A może sma?

    Godlike

  • Autor tematu
  • Power User

Reputacja: 546
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 01.05.2012 09:50

Co chcę osiągnąć? Krótko mówiąc - chcę zrobić statystyki powiedzmy 15 najlepszych graczy, które są wczytywane z pliku.
Chcę wczytać z pliku *.ini informacje do dwóch tablic - jedna zawiera liczby, druga nick gracza.
Myślałem by zrobić to w ten sposób:
- wczytać informacje do dwóch tablic (pierwsza zawiera liczby, według których chciałem sortować tą tablice, druga zawiera nicki graczy)
- sprawdzać podczas gry czy ktoś jest lepszy od ostatniego gracza z pliku
- jeżeli tak, to wrzucić go jako ostatni element tablicy i ją posortować, bo będąc lepszym od ostatniego, mógł być jednocześnie lepszy od przedostatniego itd.
I mój problem sporowadza się do samego sortowania - nie wiem jak zrobić, by druga tablica (zawierająca nicki), była "sortowana" wraz z pierwszą - tzn. jeżeli np. ostatni element tablicy pierwszej szedł na jej początek, to żeby to samo działo się z drugą tablicą...
  • +
  • -
  • 0

#7 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 01.05.2012 09:55

Można chyba się obejść bez sortowania drugiej tablicy. Zapisz nicki gracza w drugiej tablicy w kolejności id graczy, potem posortuj pierwszą tablicę tym sposobem, który podałem, a na sam koniec w pętli nicki możesz wyciągać przez id gracza z drugiej tablicy, czyli np.
nicki_graczy[sort[i][1]];

Ogólnie jeśli to mają być nicki, to czy jest sens robienia tego za pomocą tablicy? Przecież nick można pobrać później, po posortowaniu pierwszej tablicy.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych