Strona: [  << <   1 2   > >>  ]  z  2     
Autor Temat: Pomocy-system dwójkowy
dominik0123




Typ: neutral
Postów: 10
Zarejestrowany: Nov 2004
Pomocy-system dwójkowy

Witam
Mam za zadanie zrobić program przekształcający liczby naturalne na system dwójkowy (czy inaczej binarny).
Może ktoś podpowie mi jak to zrobić??

17-11-2004 20:46
Pokaż profil dominik0123  Wyślij email do dominik0123   
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Ale z jakiego systemu?


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

17-11-2004 20:58
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
dominik0123




Typ: neutral
Postów: 10
Zarejestrowany: Nov 2004

Z systemu dziesiętnego.

17-11-2004 21:06
Pokaż profil dominik0123  Wyślij email do dominik0123   
dominik0123




Typ: neutral
Postów: 10
Zarejestrowany: Nov 2004

O to doczego ja narazie doszedłem:


Sub program()
'
' program Makro
' Makro zarejestrowane 2004-11-15, autor root
polecenie1 = "wpisz liczbe naturalną"
tytuł1 = "system binarny"
liczba = InputBox(polecenie1, tytuł1)
Dim varKod As Variant
varKod = Asc("0"
liczby = liczba & varKod
liczba = MsgBox(liczby, vbOKOnly, "system binarny"


End Sub


Czy tutaj trzeba zastosować funkcje Asc??
No jak narazie to dopisuje mi  jakieś liczby niezabardzo wiem skąd??-jak sie zmieniaja jak zmieniam wartości przy określeniu Asc ; nie w systemie binarnym.
Jak widać jestem zielonym początkującym więc prosze o wyrozumiałość.

17-11-2004 21:28
Pokaż profil dominik0123  Wyślij email do dominik0123   
Reawer



Typ: neutral
Postów: 25
Zarejestrowany: Oct 2002
Oto co dla Ciebie wymyśliłem Dominiku

Cześć !!!!!
Może kod nie jest zbyt zrozumiały ale działa bez kitu.

Sub zamiana()
Dim liczba, liczba2, wynik, skladowa
liczba = InputBox("Podaj liczbę dziesiętną"
Do
liczba2 = liczba \ 2
skladowa = liczba Mod 2
wynik = skladowa & wynik
liczba = liczba2
Loop Until liczba = 0
MsgBox ("Binarnie to : " & wynik)
End Sub


Niektórzy powiedzą  że można lepiej to zrobić, ale jakoś się nikt nie kwapi do pomocy.

Pozdro
NARA

[Post edytowany dnia 25-11-2004 07:45 przez Reawer]

18-11-2004 11:44
Pokaż profil Reawer  Wyślij email do Reawer   
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Kod jest zrozumiały pod warunkiem, że zna się tę metodę przeliczania . I nie sądzę, by można było zrobić to dużo lepiej. Żeby działało szybciej, ten fragment:
If wynik <> "" Then
wynik = skladowa & wynik
End If
If wynik = "" Then
wynik = skladowa
End If


Można zastąpić takim:
wynik = skladowa & wynik


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

18-11-2004 13:08
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Reawer



Typ: neutral
Postów: 25
Zarejestrowany: Oct 2002
Dzięki za korektę Marcinie

Poprawiłem kod według twoich wskazówek, żeby Dominik nie wykorzystywał nie potrzebnych linijek kodu i teraz mi się też podoba.
NARA

18-11-2004 14:15
Pokaż profil Reawer  Wyślij email do Reawer   
dominik0123




Typ: neutral
Postów: 10
Zarejestrowany: Nov 2004


Cześć !!!!!
Może kod nie jest zbyt zrozumiały ale działa bez kitu.


Sub zamiana()
Dim liczba, liczba2, wynik, skladowa
liczba = InputBox("Podaj liczbę dziesiętną"
Do
liczba2 = liczba  2
skladowa = liczba Mod 2
wynik = skladowa & wynik
liczba = liczba2
Loop Until liczba = 0
MsgBox ("Binarnie to : " & wynik)
End Sub


Niektórzy powiedzą  że można lepiej to zrobić, ale jakoś się nikt nie kwapi do pomocy.

Pozdro
NARA


Dzięki Ci za pomoc.
Jednak twój program niedziała jak należy.

18-11-2004 22:43
Pokaż profil dominik0123  Wyślij email do dominik0123   
Reawer



Typ: neutral
Postów: 25
Zarejestrowany: Oct 2002
W czym problem ????????

Jeżeli nie działa jak chciałeś to napisz w czym problem, bo bez tego nie mogę Ci pomóc.
NARA

19-11-2004 07:40
Pokaż profil Reawer  Wyślij email do Reawer   
dominik0123




Typ: neutral
Postów: 10
Zarejestrowany: Nov 2004

No niedziala.
W odpowiedzi zamienia mi to na 0 lub 1 (zalezy od liczby).
nie wyswietla wszystkich cyfr kodu binarnego.

20-11-2004 15:57
Pokaż profil dominik0123  Wyślij email do dominik0123   
Reawer



Typ: neutral
Postów: 25
Zarejestrowany: Oct 2002
Przeczytaj to i odpowiedz

Drogi Dominiku w systemie binarnym (dwójkowym) występują tylko cyfry 0 i 1 , więc niewiem o co Ci chodzi???????? Może nie chodzi o zamianę na system binarny tylko np. na szesnastkowy w którym występują wszystkie cyfry i litery od A do F. Zastanów się i podaj konkretny przykład zamiany jakiejś liczby.
NARA

22-11-2004 13:12
Pokaż profil Reawer  Wyślij email do Reawer   
dominik0123




Typ: neutral
Postów: 10
Zarejestrowany: Nov 2004

No chodzi mi o to ze program nie podaje calej zamiany tylko jedna cyfre.
Jest to chyba ostatnia cyfra zamienionej liczby.

24-11-2004 19:04
Pokaż profil dominik0123  Wyślij email do dominik0123   
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Tu masz inny działający kod, choć powyższy był prawidłowo wpisany - lecz jeśli Ci się pokazuje tylko jedna liczba to znaczy że zmienna liczba2 = liczba  2 zgubiła jeden znak dzielenia, a prawidłowo to powinno wyglądać tak liczba2 = liczba \ 2 i niestety ale to jest wina tego forum że co poniektóre znaki są zastrzeżone i nikną w poście, czyli liczba2 = liczba podzielona przez dwa



Sub decimal_binary()
Dim liczba As Long
liczba = InputBox("Podaj liczbę dziesiętną" )
MsgBox ("Binarnie to : " & DecToBin(liczba))
End Sub

Private Function DecToBin(ByVal x As Long) As String
Dim Y As Long
Dim Numerator As String
While (x \ 2) > 0
    Y = x \ 2
    If x > 1 Then
      Numerator = Val(x - (Y * 2)) & Numerator
    End If
    x = Y
Wend
Numerator = x & Numerator
DecToBin = Numerator
End Function



[Post edytowany dnia 24-11-2004 22:25 przez Piotr T]


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

24-11-2004 22:06
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
Reawer



Typ: neutral
Postów: 25
Zarejestrowany: Oct 2002
Poprawka

Żeczywiście w kodzie był błąd, którego nie zauważyłem. Dzięki Piotrowi jest już poprawiony i mam  nadzieję że symbol dzielenia nie zniknie jak poprzednio. Następnym razem sprawdzę każdą linijkę.Swoją drogą to ciekawe jak błędny kod działał Marcinowi????Mam nadzieję że Marcin znalazł błąd i poprawił go.
NARA

[Post edytowany dnia 25-11-2004 08:05 przez Reawer]

25-11-2004 08:03
Pokaż profil Reawer  Wyślij email do Reawer   
dominik0123




Typ: neutral
Postów: 10
Zarejestrowany: Nov 2004

Dzięki Wam za pomoc!!!
Teraz jest już wszystko OK.

03-12-2004 07:21
Pokaż profil dominik0123  Wyślij email do dominik0123   
dominik0123




Typ: neutral
Postów: 10
Zarejestrowany: Nov 2004

Aha jeśli można to chciałbym sie zapytać, jeszcze czy można zrobić tak żeby przy włączeniu programu pokazywała sie grafika/obrazek z pliku??
Oraz jak zrobić 'beep' po przetworzeniu liczby??

03-12-2004 07:33
Pokaż profil dominik0123  Wyślij email do dominik0123   
Reawer



Typ: neutral
Postów: 25
Zarejestrowany: Oct 2002

Cześć!!!!!
Cieszę się że kod działa poprawnie, a co do pytań to beep wstaw przed msgboxem i po sprawie.Co do obrazka to, gdzie miałby się pokazywać ??????
NARA

03-12-2004 07:54
Pokaż profil Reawer  Wyślij email do Reawer   
dominik0123




Typ: neutral
Postów: 10
Zarejestrowany: Nov 2004

No najlepiej to yak żeby pokazywał sie jako fullscreen przy starcie.

03-12-2004 07:57
Pokaż profil dominik0123  Wyślij email do dominik0123   
Reawer



Typ: neutral
Postów: 25
Zarejestrowany: Oct 2002

Zobaczę co da się zrobić, ale narazie niemam czasu.
Jak coś wydumam to zaraz dam zanać.
NARA

03-12-2004 08:02
Pokaż profil Reawer  Wyślij email do Reawer   
Reawer



Typ: neutral
Postów: 25
Zarejestrowany: Oct 2002

Narazie sprawdź ten kod.
Jest prawie fullscrean ale jeśli Ci nie będzie się podobać to w poniedziałek może coś lepszego wymyślę.Możesz go dać w sekcji ThisWorkbook jako
Private Sub Workbook_Open() to będzie startował przy uruchamianiu.
NARA
PS: Zmień buźki na " ) "

Sub zamiana()
Dim liczba, liczba2, wynik, skladowa
Application.ScreenUpdating = False
ActiveWindow.WindowState = xlMaximized
Application.CommandBars("Drawing".Visible = False
Application.CommandBars("Formatting".Visible = False
Application.CommandBars("Standard".Visible = False
Range("z1".Select
    With ActiveWindow
        .DisplayGridlines = False
        .DisplayHeadings = False
        .DisplayHorizontalScrollBar = False
        .DisplayVerticalScrollBar = False
        .DisplayWorkbookTabs = False
    End With
    With Application
        .DisplayFormulaBar = False
        .DisplayStatusBar = False
    End With
ActiveSheet.SetBackgroundPicture FileName:= _
"C:Moje dokumentyMoje obrazyobrazek.jpg"
Application.ScreenUpdating = True
liczba = InputBox("Podaj liczbę dziesiętną"
If liczba = "" Then GoTo koniec
Do
liczba2 = liczba  2
skladowa = liczba Mod 2
wynik = skladowa & wynik
liczba = liczba2
Loop Until liczba = 0
Beep
MsgBox ("Binarnie to : " & wynik)
koniec:
Application.ScreenUpdating = False
Application.CommandBars("Drawing".Visible = True
Application.CommandBars("Formatting".Visible = True
Application.CommandBars("Standard".Visible = True
    With ActiveWindow
        .DisplayGridlines = True
        .DisplayHeadings = True
        .DisplayHorizontalScrollBar = True
        .DisplayVerticalScrollBar = True
        .DisplayWorkbookTabs = True
    End With
    With Application
        .DisplayFormulaBar = True
        .DisplayStatusBar = True
    End With
ActiveSheet.SetBackgroundPicture FileName:=""
Application.ScreenUpdating = True
End Sub

[Post edytowany dnia 03-12-2004 12:50 przez Reawer]

03-12-2004 12:48
Pokaż profil Reawer  Wyślij email do Reawer   
Wszystkich odpowiedzi: 20 :: Maxymalnie na stronę: 20
Strona: [  << <   1 2   > >>  ]  z  2