Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перевод чисел из десятичной системы в двоичную.

76K
08 ноября 2011 года
magistr011
3 / / 08.11.2011
Написал код на С++ для консоли, всё работает...

Код:
#include <iostream>
using namespace std;

int main ()
{
    int i;
    int value;

    cout << "Введите число: ";
    cin >> value;
    cout << "\nДвоичная СС: ";

    for (i = 31; i >= 0; i--)
        {
        if ((1 << i) & value)
                {
            cout << "1";
        }
        else
        {
            cout << "0";
        }
    }

    cout << endl;
system ("pause >> void");
}


Теперь хочу написать тоже самое только в Builder C++ но у меня ничего не получается...
Вот код:

Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int c;

        c = StrToInt (Edit1->Text);

        for (int i = 31; i >= 0; i--)
        {
        if ((1 << i) & c)
                {
                 Form1->Label1->Caption=Form1->Label1->Caption+'\t'+IntToStr("1");
        }
        else
        {
                 Form1->Label1->Caption=Form1->Label1->Caption+'\t'+IntToStr("0");
        }
        }

}


Хочу в Edit - вводить число и чтобы в Label - выводилось это число, только в двоичной системе счисления...
Немогу понять, что не так???
394
08 ноября 2011 года
MegaMozg
317 / / 18.03.2006
Ну попробуй не вставлять в Label по одной цифре, а сначала сформировать строку и потом уже вывести ее в Label
76K
08 ноября 2011 года
magistr011
3 / / 08.11.2011
Цитата:
сформировать строку и потом уже вывести ее в Label

Можно пример? Я просто думал, что строка только в Label формируется... Как её сфрмировать, а главное где??

394
08 ноября 2011 года
MegaMozg
317 / / 18.03.2006
примерно так

Код:
#include <string>
using namespace std;

...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        int c;
      string s; // "стандартная" std::string

        c = StrToInt (Edit1->Text);


        for (int i = 31; i >= 0; i--)
        {
        if ((1 << i) & c)
                {
                 s.append('1'); // добавили в конец строки
        }
        else
        {
                 s.append('0'); // добавили в конец строки
        }
        }

Form1->Label1->Caption = s.c_str(); // строку в Label
}
394
08 ноября 2011 года
MegaMozg
317 / / 18.03.2006
и еще, сразу не заметил, возможно здесь причина ошибки
ты пишешь:
 
Код:
IntToStr("0");


разве эта функция в качестве параметра не int принимает? выходит, ты передаешь туда коды символов "0" и "1"
может так правильнее будет:
 
Код:
Form1->Label1->Caption=Form1->Label1->Caption+"\t0";
и
Form1->Label1->Caption=Form1->Label1->Caption+"\t1";
277
08 ноября 2011 года
arrjj
1.7K / / 26.01.2011
 
Код:
String s="";
int p=StrToInt(Edit1->Text);
while(p>0)
{
s=IntToStr(p%2)+s;
p/=2;
}
ShowMessage(s);

[COLOR="silver"]//Кактотаквроде[/COLOR]
394
08 ноября 2011 года
MegaMozg
317 / / 18.03.2006
Цитата: arrjj
 
Код:
String s="";
int p=StrToInt(Edit1->Text);
while(p>0)
{
s=IntToStr(p%2)+s;
p/=2;
}
ShowMessage(s);

[COLOR="silver"]//Кактотаквроде[/COLOR]



да, сей алгоритм лучше выглядит, я у ТС только на вывод данных смотрел

76K
08 ноября 2011 года
magistr011
3 / / 08.11.2011
Всем спасибо, разобрался...

arrjj тема с ShowMessage неплохо придумано, но всёже я через Label риализовал, но твоим циклом. Но и ShowMessage тоже теперь использовать буду)))

MegaMozg отдельное спасибо,
Цитата:
разве эта функция в качестве параметра не int принимает? выходит, ты передаешь туда коды символов "0" и "1"

это именно так... Всё исправил, можно теперь пользоваться обоими способами )))

Тему можно закрывать.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог