Strona 1 z 1
Dziesietne na binarne
: 28 maja 2009, o 21:32
autor: macieja92
Witam próbuje napisać program na zamiane liczb dziesiętnych na binarne i na odwrót ciągle mi nie wychodzi ... jak ktoś może niech pomoże
Przepraszam że nie dodałem, język C++
Dziesietne na binarne
: 28 maja 2009, o 21:39
autor: lukki_173
VISUAL BASIC
Dziesiętny na binarny:
Public Class Form1
Public Function DecimalToBinary(ByVal DecimalNum As Long) As String
Dim tmp As String
Dim n As Long
n = DecimalNum
tmp = Trim(Str(n Mod 2))
n = n 2
Do While n <> 0
tmp = Trim(Str(n Mod 2)) & tmp
n = n 2
Loop
DecimalToBinary = tmp
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, wynik As Integer
a = TextBox1.Text
wynik = DecimalToBinary(a)
Label1.Text = wynik
End Sub
End Class
Binarny na dziesiętny:
Public Class Form1
Public Function BinaryNaDecimal(ByVal X As String) As Long
Dim n As Long
Dim s As Integer
For s = 1 To Len(X)
If Not IsNumeric(Mid(X, Len(X) - s + 1, 1)) Or Mid(X, Len(X) - s + 1, 1) > 1 Then
BinaryNaDecimal = -1
Exit Function
End If
n = n + (Mid(X, Len(X) - s + 1, 1) * (2 ^ (s - 1)))
Next s
BinaryNaDecimal = n
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer
Dim wynik As Integer
If Not IsNumeric(TextBox1.Text) Then
Label1.Text = "Nie można wykonać działania!"
Exit Sub
End If
a = TextBox1.Text
wynik = BinaryNaDecimal(a)
If wynik = -1 Then
Label1.Text = " Nie można wykonać działania!"
Exit Sub
End If
Label1.Text = wynik
End Sub
End Class
Dziesietne na binarne
: 28 maja 2009, o 21:57
autor: matshadow
Kod: Zaznacz cały
#include <iostream>
using namespace std;
string decToBin(int n)
{
string w="";
while(n>0)
{
char cyfra=n%2+'0';
w=cyfra+w;
n/=2;
}
return w;
}
int binToDec(string s)
{
int wynik=0;
for(int i=0; i<s.size(); i++)
wynik=2*wynik+(s[i]-'0');
return wynik;
}
main()
{
int n;
string l;
cin>>n;
cout<<decToBin(n)<<endl;
cin>>l;
cout<<binToDec(l)<<endl;
system("pause");
}
Dziesietne na binarne
: 28 maja 2009, o 21:59
autor: macieja92
No tak tylko wystarczy wstawic w case obramowac i oblookam czy dziala-- 28 maja 2009, 22:02 --tak pan napisał że nie idzie tego pociac na case xD
Dziesietne na binarne
: 28 maja 2009, o 22:03
autor: matshadow
ale co chcesz zrobić? Chcesz sobie wybrać czy na binarne czy na dziesiętne?
Dziesietne na binarne
: 28 maja 2009, o 22:10
autor: macieja92
chce w case umiesic ze w
case 1 :
Zamiana bin do dec
case 2 :
Zamiana dec do bin
Dziesietne na binarne
: 28 maja 2009, o 22:15
autor: matshadow
Kod: Zaznacz cały
#include <iostream>
using namespace std;
string decToBin(int n)
{
string w="";
while(n>0)
{
char cyfra=n%2+'0';
w=cyfra+w;
n/=2;
}
return w;
}
int binToDec(string s)
{
int wynik=0;
for(int i=0; i<s.size(); i++)
wynik=2*wynik+(s[i]-'0');
return wynik;
}
main()
{
int n,k;
string l;
cin>>n;
switch(n)
{
case 1:
{
cin>>l;
cout<<binToDec(l)<<endl;
} break;
case 2:
{
cin>>k;
cout<<decToBin(k)<<endl;
} break;
}
system("pause");
}
najpierw wczytujesz opcje, czy na bin, czy na dec, a potem liczbę do zamiany
Dziesietne na binarne
: 28 maja 2009, o 22:21
autor: macieja92
i czy moglby pan napisac do czego sluzy n k w-- 28 maja 2009, 22:41 --btw ... i nic nawet nie ma o tym ze porsze poda czy to liczbe binarna czy to dziesietna ..
Dziesietne na binarne
: 28 maja 2009, o 22:42
autor: lordQubalus
Ja mam prostszy (choć rekurencyjny) sposób:
Kod: Zaznacz cały
#include<iostream>
using std::cin;
using std::cout;
void dec2bin(unsigned int liczba)
{
if (!liczba) return;
dec2bin(liczba/2);
cout<<liczba%2;
}
int main()
{
unsigned int liczba;
cout<<"podaj liczbe: ";
cin>>liczba;
cout<<"
"<<liczba<<" w systemie binarnym wyglada tak: ";
dec2bin(liczba);
cout<<"
";
system("pause");
}
Dziesietne na binarne
: 28 maja 2009, o 22:50
autor: macieja92
dobra, moze sobie daruje prosbe o pomoc tutaj, bo nie jest zrozumialy kod dla mnie, co innego jak sie samemu pisze to sie wie co jest do czego...-- 28 maja 2009, 23:10 --albo jak juz ktos pisze niech uzywa zmiennych podpisanych np
int zamiana
int dziesietna
a nie ze int k int s i ktos kto chce zrozumiec dzialanie kodu w ogole nie wie o chodzi...
Dziesietne na binarne
: 20 lis 2010, o 11:08
autor: Arst
Przepraszam, że odświeżam ten wątek jednak mam pytanie odnośnie fragmentu kodu wyżej a nie warto zakładać osobnego tematu. Mianowicie chodzi o ten fragment funkcji:
Kod: Zaznacz cały
void dec2bin(unsigned int liczba)
{
if (!liczba) return;
dec2bin(liczba/2);
cout<<liczba%2;
}
Czy ktoś byłby w stanie wytłumaczyć co sprawdza warunek w tej funkcji i co zwraca return? Nie ogarniam tego fragmentu.
Dziesietne na binarne
: 20 lis 2010, o 13:11
autor: smiechowiec
Arst pisze:chodzi o ten fragment funkcji:
Czy ktoś byłby w stanie wytłumaczyć co sprawdza warunek w tej funkcji i co zwraca return?
if (!liczba) return;
Jest to sprawdzenie czy liczba == 0, jeżeli tak kończymy działanie.
if (liczba) oznacza czy liczba jest różna od zera, natomiast wykrzyknik oznacza negację warunku.
Niestety dla liczby zero podanej do konwersji nie zostanie wypisany wynik w postaci zera.
Kod: Zaznacz cały
void dec2bin(unsigned int liczba) {
if (!liczba) return; // Jeśli liczba == 0 zakończ działanie funkcji
dec2bin(liczba/2); // wywołaj rekurencyjnie funkcję z liczbą dwa razy mniejszą czyli przesuniętą o jeden bit w prawo
cout<<liczba%2; // wypisz ostatnią cyfrę binarną liczby czyli (liczba & 1)
}
Ogólnie w języku C/C++ można wprost wpisać/wypisać kolejne bity liczby i po konwersji.