Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] System 10-tkowy, 3-kowy, 2-kowy


Rekomendowane odpowiedzi

Opublikowano

Cześć!

 

 

 

Szukam kodu, który przekonwertuje liczbę z systemu dziesiątkowego na trójkowy i dwójkowy i vice versa.

Jakoś tu pusto...

Opublikowano

z UDF MathEx

; #FUNKCJA# ======================================================================================
; Nazwa..........: _ConvertSystemXtoY
; Opis...........: Konwertuje system liczbowy X do systemu liczbowego Y
; Składnia.......: _ConvertSystemXtoY($iSysIn, $iNumber, $iSysOut)
; Parametry......: $iSysIn - System liczbowy liczby wyjsciowej (1-36)
;                          $iNumber - Liczba, która ma zostać przeliczona na inny system liczbowy
;                          $iSysOut - System liczbowy, w którym zapisana będzie liczba wynikowa (1-36)
; Zwracane wart..: Sukces - Zwraca wartosc liczby
;                                          Niepowodzenie - Zwraca -1 - Liczba podana w pierwszym parametrze nie jest w zakresie 1-36
;                                          Niepowodzenie - Zwraca -2 - Liczba podana w trzecim parametrze nie jest w zakresie 1-36
;                                          Niepowodzenie - Zwraca -3 - Liczba zawiera nieprawidłowe znaki
; Autor .........: Sopel
; =================================================================================================
Func _ConvertSystemXtoY($iSysIn, $iNumber, $iSysOut)
    Local $znaki[36] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    Local $liczba
    Local $bPoprawnosc
    Local $sys10 = 0
    Local $sysy = ''
    Local $i
    If $iSysIn < 0 Or $iSysIn > 36 Then Return -1
    If $iSysOut < 0 Or $iSysOut > 36 Then Return -2

    $iNumber = StringUpper($iNumber)
    $liczba = StringSplit($iNumber, '')
    Local $bPoprawnosc
    For $i = 1 To StringLen($iNumber)
        $bPoprawnosc = False
        If Asc($liczba[$i]) >= 48 And Asc($liczba[$i]) <= 57 Then
            $liczba[$i] = Asc($liczba[$i]) - 48
            $bPoprawnosc = True
        EndIf
        If Asc($liczba[$i]) >= 65 And Asc($liczba[$i]) <= 90 Then
            $liczba[$i] = Asc($liczba[$i]) - 55
            $bPoprawnosc = True
        EndIf
        If $bPoprawnosc = False Then Return -3
    Next

    For $i = StringLen($iNumber) To 1 Step -1
        $sys10 += $iSysIn ^ (StringLen($iNumber) - $i) * $liczba[$i]
    Next

    Do
        $sysy = $znaki[Mod($sys10, $iSysOut)] & $sysy
        $sys10 = Floor($sys10 / $iSysOut)
    Until $sys10 = 0
    Return $sysy
EndFunc   ;==>_ConvertSystemXtoY
Opublikowano

Najlepiej wstaw w include i dodaj samą funkcję lub bez include używając jego części.

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

Podaj mniej więcej, którą część, bo robię taki a'la kalkulator od matmy, a z include nie często się bawię.

 

/edit:

 

Ktoś poda?

 

//edit (kurde milczą):

No dobra, ktoś da chociaż przykład , jak ma tego kodu użyć

///jak nie to proszę zamknąć.

Jakoś tu pusto...

Opublikowano

Np

#include <MathEx.au3>
Func _ConvertSystemXtoY($iSysIn, $iNumber, $iSysOut); tylko parametry podstawiasz które masz dokładnie opisane w budowanie funkcji u góry kolega Ci podał.
itd dalej dalej dalej
EndFunc

 

 

$iSysIn - System liczbowy liczby wyjsciowej (1-36)

; $iNumber - Liczba, która ma zostać przeliczona na inny system liczbowy
; $iSysOut - System liczbowy, w którym zapisana będzie liczba wynikowa(1-36)

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

dobra zrozumiałem: iSysIn = 10

$iNumber = Guictrlread ($input8)

$SysOut = 2 Przeliczy z 10 na 2. Tak?

Jakoś tu pusto...

Opublikowano

Przetestuj sobie to, a zrozumiesz:

 

$wejscie = InputBox("Wejscie","Podaj liczbe",5)

$zmiana =_ConvertSystemXtoY(10,$wejscie,2)

MsgBox(0,"Wyjscie", $zmiana)

 

składnia jest prosta:

_ConvertSystemXtoY( DO_ZAMIANY_SYSTEM_LICZBOWY_NP_10_=_DZIESIETNY , LICZBA_DO_ZMIANY , ZMIENIONY_SYSTEM_LICZBOWY_NP_2_=_DWOJKOWY) 

9obpmnjr.png

Opublikowano

Dobra działa, ale wynik jest podawany od tyłu: bo 2 z 10-siątki to 10 z 2-ki, a wyświetla 01.

 

/edit

Bym zapomniał: @ref

Jakoś tu pusto...

Opublikowano

bo 2 z 10-siątki to 10 z 2-ki

Ledwo co można zrozumieć z tego.

 

Ogólnie to znów ty coś źle robisz, bo funkcja działa poprawnie.

http://screenshooter.net/2148672/cyvktfj

 

I już pisałem, że ten kod ma jedną małą poprawkę co do tego, więc mam nadzieję, że nie użyłeś całego UDFa nie poprawiając tej funkcji.

Opublikowano
Opublikowano

może mam błąd w ud'fie, ale nie sądze, bo by nie działało, jtr poprawie.

Jakoś tu pusto...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...