2010-09-28 14 views
6

Dla MMORPG World of Warcraft próbuję napisać bibliotekę. Pieniądze w tych grach są przechowywane jako liczba całkowita, a w grze nie jest to liczba całkowita oparta na złotych, srebrnych i miedzianych monetach.Integer zamień na WoW Gold

Co 100 miedzi to 1 srebro, a co 100 srebra to 1 złoty.

Teraz trzeba przekształcić taką liczbę całkowitą do WoW formacie Pieniądze: na przykład

123123 powinien zwrócić: 23c 31s 12g

Ktoś wie jak to zrobić

+1

jakim języku? – kennytm

+0

Naprawdę nie ma znaczenia. Po prostu muszę o tym pomyśleć xD –

+3

Czy na pewno jest tam 32 srebrniki? – SingleNegationElimination

Odpowiedz

10

C#:

int[] WoWMoney(int m) 
{ 
     int[] result = new int[3]; 
     int copper = m % 100; 
     m = (m - copper)/100; 
     int silver = m % 100; 
     int gold = (m - silver)/100; 
     result[0] = copper; 
     result[1] = silver; 
     result[2] = gold; 
     return result; 
} 
2

przede wszystkim podzielić 123123 do 10000. Daje to 12.3123. Cała liczba (12) to liczba złota. Reszta (po delimeter) 3123 dzieli się na 100, by zdobyć srebro. To daje 31,23. Znowu pierwsza część (31) to srebro, a reszta (23) to twoja miedź.

W C++, na przykład algorytm ten będzie wyglądać

int number = 123123; 
int gold = number/10000; //this will give you the whole part because of the int type 
number = number%10000; //this will make 'number' 3123 
int silver = number/100; //this will get the silver 
int copper = number%100; //this will get the copper 
3

pytona:

def fmtGold(value): 
    return "%sc %ss %sg"%(value%100,value/100%100,value/10000%100) 
+0

Ostrzeżenie: Ta odpowiedź ma dwa błędy -> Nie powinno być% 100 dla złotych, ale "wartość // 10000", a ilość negatywów nie jest odpowiednio zarządzana. – gvo

2
  1. Podzielić całkowitą o 10 000 (miedź złotem) ma część całkowitą, to będzie być ilością złota.
  2. Resztę z poprzedniego kroku. Podziel przez 100 (miedź w srebrze), będzie to ilość srebra.
  3. Resztę z poprzedniego kroku. Będzie to miedź.
0

Perl:

print "How much : "; 
$money = <>; 
chomp $money; 

$gold = int($money/10000); 
$money = int($money%10000); 
$silver = int($money/100); 
$copper = int($money%100); 


$result = sprintf("You need : %dg %ds %dc", $gold, $silver, $copper); 
print "\n$result\n"; 

<>;