Strona 1 z 1

Konwerter dziesiętno-binarny w C++

: 25 lut 2013, 14:48
autor: Maciek T
Witajcie! Tworzę konwerter, działanie algorytmu mam już opracowane, jednakże cały czas coś nie idzie po mojej myśli - może ktoś pomoże :P

Kod: Zaznacz cały

#include <cstdlib>  //Biblioteka odpowiedzialna za czyszczenie ekranu
#include <iostream> //Biblioteka odpowiedzialna za "std"
#include <cmath>    //Biblioteka odpowiedzialna za pierwiastek kwadratowy z liczby



int main()
{

    int x;
    int reszta;
    int menu;
    int zamykanie;



        //Czyszczenie ekranu
system("cls");
        //Nagłówek i menu
std::cout << "-----------------------------------------------" << std::endl;
std::cout << "|Konwerter dziesietno-binarny by SandaU - 2012|" << std::endl;
std::cout << "-----------------------------------------------" << std::endl;
std::cout << "Wybierz numer pozycji i zatwierdz klawiszem Enter" << std::endl;
std::cout << "1. Przelicz liczbe dziesietna na binarna" << std::endl;
std::cout << "2. Przelicz liczbe binarna na dziesietna" << std::endl;
std::cin >> menu;


    //10>2
std::cout << "Podaj liczbe w systemie dziesietnym:" << std::endl;
std::cin >> x;

     [b]    do
         {
         std::cout << "Wynik dzielenia: ";
         std::cout << x/2 << x << std::endl;
         std::cout << "Reszta: ";
         std::cout << x%2 << reszta << std::endl;
         } while ( x>0 );
[/b]



    //2>10


    //Zamykanie programu
std::cout <<"Zamknac aplikacje? [0 - nie, 1 - tak]" << std::endl;
std::cin >> zamykanie;

 while (zamykanie == 0);

}
Sprawa jest następująca - we właściwej części kodu odpowiadającej za konwersję liczby (w pętli do-while) chciałem zrobić tak, by program liczył liczbę taką metodą jak się uczy w szkole - reszta z dzielenia itp. Tyle że program zamiast nadpisywać liczbę x po każdym dzieleniu i powtarzać kod dopóki x nie zrówna się z zerem, to występuje zapętlenie że wiecznie operuje na tych samych składnikach. Do tego nie mam pomysłu jak zrobić by zera i jedynki z reszty dzielenia były dopisywane do jakiejś zmiennej, a potem wyświetlane jako liczba po konwersji :) Pomoże ktoś?

Re: Konwerter dziesiętno-binarny w C++

: 25 lut 2013, 15:00
autor: beluosus
Maciek T pisze:Tyle że program zamiast nadpisywać liczbę x po każdym dzieleniu
No taki jest problem, że tej liczby nie nadpisujesz. Prawdopodobnie masz złe pojęcie co robi ta linijka:
Maciek T pisze:

Kod: Zaznacz cały

         std::cout << x/2 << x << std::endl;
Zostanie wyświetlona wartość dzielenia x/2 a następnie x. Co w konsoli będzie wyglądało na jedną liczbę.

Kod: Zaznacz cały

			std::cout << "Wynik dzielenia: ";
			std::cout << x/2 << std::endl;
			std::cout << "Reszta: ";
			std::cout << x%2 << std::endl;
			x /= 2; // to samo co: x = x / 2;
Jeśli chciałbyś skorzystać z gotowego rozwiązania to masz w <bitset>.