#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");
}
}
}
{
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 - выводилось это число, только в двоичной системе счисления...
Немогу понять, что не так???
Ну попробуй не вставлять в Label по одной цифре, а сначала сформировать строку и потом уже вывести ее в Label
Цитата:
сформировать строку и потом уже вывести ее в Label
Можно пример? Я просто думал, что строка только в Label формируется... Как её сфрмировать, а главное где??
Код:
#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
}
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
}
ты пишешь:
Код:
IntToStr("0");
разве эта функция в качестве параметра не int принимает? выходит, ты передаешь туда коды символов "0" и "1"
может так правильнее будет:
Код:
Form1->Label1->Caption=Form1->Label1->Caption+"\t0";
и
Form1->Label1->Caption=Form1->Label1->Caption+"\t1";
и
Form1->Label1->Caption=Form1->Label1->Caption+"\t1";
Код:
String s="";
int p=StrToInt(Edit1->Text);
while(p>0)
{
s=IntToStr(p%2)+s;
p/=2;
}
ShowMessage(s);
int p=StrToInt(Edit1->Text);
while(p>0)
{
s=IntToStr(p%2)+s;
p/=2;
}
ShowMessage(s);
[COLOR="silver"]//Кактотаквроде[/COLOR]
Цитата: arrjj
Код:
String s="";
int p=StrToInt(Edit1->Text);
while(p>0)
{
s=IntToStr(p%2)+s;
p/=2;
}
ShowMessage(s);
int p=StrToInt(Edit1->Text);
while(p>0)
{
s=IntToStr(p%2)+s;
p/=2;
}
ShowMessage(s);
[COLOR="silver"]//Кактотаквроде[/COLOR]
да, сей алгоритм лучше выглядит, я у ТС только на вывод данных смотрел
arrjj тема с ShowMessage неплохо придумано, но всёже я через Label риализовал, но твоим циклом. Но и ShowMessage тоже теперь использовать буду)))
MegaMozg отдельное спасибо,
Цитата:
разве эта функция в качестве параметра не int принимает? выходит, ты передаешь туда коды символов "0" и "1"
это именно так... Всё исправил, можно теперь пользоваться обоими способами )))
Тему можно закрывать.