• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z przelicznikiem z binarnego na dziesiętny

0 głosów
274 wizyt
pytanie zadane 1 sierpnia 2015 w C i C++ przez Mateusz Leonowicz Początkujący (310 p.)
#include <iostream>
#include <cmath>

using namespace std;

void bin_to_dec(int dlugosc, string liczba) ;

int main()
{
    string liczba ;
    cout << "Podaj liczbe w binarnym: " ;
    cin >> liczba ;

    int dlugosc ;
    dlugosc = liczba.length() ;
    cout << "Dlugosc: " << dlugosc << endl ;

    bin_to_dec(dlugosc, liczba) ;
    return 0;
}

void bin_to_dec(int dlugosc,string liczba)
{
    int wynik = 0, j = 0;
    for (int i = (dlugosc-1) ; i >= 0 ; i-- , j++)
    {
        wynik += pow (liczba[i] , j) ;
    }

    cout << "Twoja liczba to: " << wynik ;
}

 

Oto co stworzyłem, nie bardzo wiem co jest źle :/

2 odpowiedzi

+1 głos
odpowiedź 1 sierpnia 2015 przez Krawiec91 Pasjonat (19,600 p.)
wybrane 1 sierpnia 2015 przez Mateusz Leonowicz
 
Najlepsza
Pierwsza sprawa:
Jeśli chcesz robić jakiś użytek (obliczenia) z liczb wprowadzanych z klawiatury i zapisywanych do zmiennej typu string musisz najpierw dokonać ich konwersji na typ do przechowywania liczb, np int. Przykładowo wprowadzona w Twoim programie liczba z klawiatury, np. 1111 to w pamięci komputera znaki ASCII liczby 1, czyli 31h. Używając tego "na żywca" do obliczeń, działa się na liczbie 31h a 1.  Trzeba o tym pamiętać.
Druga sprawa:
Przy konwersji BIN na DEC, do kolejnych potęg podnosisz liczbę 2 (w końcu to system binarny), a nie 1 lub 0.
http://www.edu.godula.com/?zo=sl_bintodec
+1 głos
odpowiedź 1 sierpnia 2015 przez Bartek85 Mądrala (7,440 p.)

Poniżej poprawiony kod.

void bin_to_dec(int dlugosc, string liczba)
{
	int wynik = 0, j = 0;
	for (int i = (dlugosc - 1); i >= 0; i--, j++)
	{
		wynik += liczba[i] == '1' ? pow(2, j) : 0;
	}

	cout << "Twoja liczba to: " << wynik;
}

 

komentarz 1 sierpnia 2015 przez Mateusz Leonowicz Początkujący (310 p.)
Dziękuję bardzo ^^

Podobne pytania

0 głosów
1 odpowiedź 768 wizyt
+1 głos
2 odpowiedzi 1,514 wizyt
pytanie zadane 14 stycznia 2021 w C# przez Dmianos Nowicjusz (220 p.)
0 głosów
1 odpowiedź 595 wizyt
pytanie zadane 6 stycznia 2020 w C i C++ przez 12332112332121 Dyskutant (8,270 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,328 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...