Przeliczanie dec na bin. Kłopoty z memo?

dział ogólny

Przeliczanie dec na bin. Kłopoty z memo?

Nowy postprzez szumekjac » wtorek, 28 lipca 2009, 17:45

Witam, mam pewien kłopot... Mój program musi przeliczać liczby dziesiętne na binarne. W sieci znalazłem przykład kodu, który to w zrozumiały i prosty sposób wykonuje. Kod działa w konsoli tekstowej. Mój program, natomiast wykorzystuje komponenty graficzne i wyniki obliczeń prezentuje w komponencie TMemo.
Załączony kod konwertuje przykładową dziesiętną liczbę 10 i zamiast spodziewanego wyniku otrzymuję:
1
1
1
5067280
wyświetlone w Memo2 (tak jak chcę).
Inne liczby zwracają również złe wyniki, tylko liczba bitów się zgadza (255 - 8 wierszy, 10 - 4 wiersze, itd.)
Proszę o wskazówki gdzie popełniam błąd, poniżej prezentuję fragment "mojego" kodu...
Zależałoby mi również na tym aby liczba binarna wyświetlona została w jednym wierszu...

Pozdrawiam i proszę o wyrozumiałość... :)

Kod: Zaznacz cały
       
        int reszta;
        int liczba = 10;
        int wynik[20];
        {int z =0;
         while (liczba>1)
        {
        reszta=liczba % 2;
        if(reszta>0)
        wynik[z]=reszta;
        liczba=liczba / 2;
        z=z+1;
        if(liczba<2)
        {wynik[z]=liczba;break;}
         }
        for(int j=z;j>=0;j--)
        Memo2->Lines->Add(wynik[j]);
         }
Avatar użytkownika
szumekjac
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): piątek, 10 lipca 2009, 08:05
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Przeliczanie dec na bin. Kłopoty z memo?

Nowy postprzez polymorphism » środa, 29 lipca 2009, 11:01

A nie lepiej (i bezpieczniej) tak:
Kod: Zaznacz cały
#include <limits>
#include <algorithm>

...

unsigned int liczba = 200;
char wynik[std::numeric_limits<unsigned int>::digits + 1];
int z = 0;

do
{
    wynik[z++] = "01"[liczba & 1];
    liczba >>= 1;
}
while(liczba);

wynik[z] = 0;
std::reverse(wynik,wynik + z);
Memo2->Lines->Add(wynik);
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Przeliczanie dec na bin. Kłopoty z memo?

Nowy postprzez szumekjac » środa, 29 lipca 2009, 13:09

Rzeczywiście prościej! Działa idealnie... Dziękuję... :)
Avatar użytkownika
szumekjac
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): piątek, 10 lipca 2009, 08:05
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Przeliczanie dec na bin. Kłopoty z memo?

Nowy postprzez Cyfrowy Baron » czwartek, 30 lipca 2009, 11:13

A sprawdzałeś poradę: ► patrz serwis: Cyfrowy Baron dział: porady -> Łańcuchy znaków -> Konwersja wartości binarnej do wartości dziesiętnej i na odwrót.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Przeliczanie dec na bin. Kłopoty z memo?

Nowy postprzez szumekjac » czwartek, 30 lipca 2009, 11:49

Nie sprawdziłem... :oops:
Dziękuję za przypomnienie, zwłaszcza, że teraz potrzebuję bin na dec... :)
Avatar użytkownika
szumekjac
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): piątek, 10 lipca 2009, 08:05
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 6 gości