Member
Статус: Не в сети Регистрация: 11.01.2003 Откуда: Россия, Тюмень
В лабораторной работе необходимо выполнить перевод числа из одной системы счисления (начальной) в другую (конечную) согласно варианту, используя в качестве промежуточной системы счисления внутреннее представление числа в памяти компьютера (двоичная система). На вход подается цепочка символов (строка), содержащая только цифры начальной системы счисления, на выходе формируются два результата: число в промежуточной системе в формате LONGINT и число в конечной системе счисления также в виде цепочки символов. Перевод из внутреннего представления в конечную систему осуществляется путем деления на основание конечной системы счисления. Все циклические операции должны быть организованы рационально. Содержательные части программы оформляются процедурами. Необходимо предусмотреть контроль ошибок ввода, когда цифры в строке ввода не являются цифрами-знаками начальной системы счисления.
2. Задание на лабораторную работу
Написать программу, выполняющую перевод числа из заданной системы счисления в двоичную и из двоичной - в другую заданную систему счисления. Исходное число считать заданным в виде строки символов, изображающей цифры данной системы счисления. Двоичное число представить в формате Longint , а второй выходной параметр - в формате string. Системы счисления выбрать в соответствии с вариантом задания.
Мне нужно из 4 в 3
------------------------------------------------
Помогите ко чем может, очень надо
Member
Статус: Не в сети Регистрация: 11.01.2003 Откуда: Россия, Тюмень
Neo A.D. написать то не сложно, сам вижу что прога фигня, но понимаешь у нас програмирование было на первом курсе и нас учили так поверхностно (2+2 и т.д.), а щас через два года опять началось и ничего не объясняя начали проги довать писать.
A.G. потому что именно в Builder'e програмируем.
tmp=0;
m=Edit1->Text.Length()-1;
minus=false;
if (Edit1->Text.c_str()[0]=='-')
minus=true;
if (m+1==minus)
{
ShowMessage("FACK YO LUUZAH, ENTER THAT FAKIN SHIT");
return;
}
l=1;
for (i=m;i>=minus;i--)
{
k=Edit1->Text.c_str()[i]-48;
if (k<0 || k>sIN-1)
{
ShowMessage("NOTTTA FAKIN FOUR-imal' VALUE");
return;
}
if (minus)
tmp-=k*l;
else
tmp+=k*l;
l*=sIN;
}
Label7->Caption=tmp;
a[64]=0;
zz=1;
for (i=63;i>-1;i--)
{
if (tmp&(zz<<i))
a[63-i]=49;
else
a[63-i]=48;
}
Label4->Caption=a;
double check=0;
for (i=0;i<64;i++)
check+=(a[i]-48)*__int64(pow(2,63-i));
if (check!=tmp)
{
ShowMessage("FATAL EROR!!!");
Application->Terminate();
}
zz=1;
i=0;
if (minus) check=-check;
while(1)
{
if (zz>check) break;
zz*=sOUT;
i++;
}
b=new char [i+1];
ZeroMemory(b,i+1);
m=pow(sOUT,i);
for (k=0;k<i;k++)
{
m/=sOUT;
l=0;
while ((l+1)*m<=check)
l++;
b[k]=l+48;
check-=l*m;
}
if (i<1) Label5->Caption="0";
else
{
if (minus)
Label5->Caption="-"+AnsiString(b);
else
Label5->Caption=b;
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения