Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 7 
  Версия для печати (полностью) Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 11.01.2003
Откуда: Россия, Тюмень
В лабораторной работе необходимо выполнить перевод числа из одной системы счисления (начальной) в другую (конечную) согласно варианту, используя в качестве промежуточной системы счисления внутреннее представление числа в памяти компьютера (двоичная система). На вход подается цепочка символов (строка), содержащая только цифры начальной системы счисления, на выходе формируются два результата: число в промежуточной системе в формате LONGINT и число в конечной системе счисления также в виде цепочки символов. Перевод из внутреннего представления в конечную систему осуществляется путем деления на основание конечной системы счисления. Все циклические операции должны быть организованы рационально. Содержательные части программы оформляются процедурами. Необходимо предусмотреть контроль ошибок ввода, когда цифры в строке ввода не являются цифрами-знаками начальной системы счисления.

2. Задание на лабораторную работу

Написать программу, выполняющую перевод числа из заданной системы счисления в двоичную и из двоичной - в другую заданную систему счисления. Исходное число считать заданным в виде строки символов, изображающей цифры данной системы счисления. Двоичное число представить в формате Longint , а второй выходной параметр - в формате string. Системы счисления выбрать в соответствии с вариантом задания.

Мне нужно из 4 в 3
------------------------------------------------
Помогите ко чем может, очень надо



Партнер
 

Member
Статус: Не в сети
Регистрация: 02.07.2003
Эх, написал бы да долго! Ты чё сам не можешь, не такой уж сложный алгоритм.

_________________
Seleron, GeForse и Windovs -три любимых слова ламеров.


 

Member
Статус: Не в сети
Регистрация: 06.02.2004
Откуда: берутся дети?
а почему именно в билдере ???
с графическим интерфейсом что-ли ????


 

Member
Статус: Не в сети
Регистрация: 11.01.2003
Откуда: Россия, Тюмень
Neo A.D. написать то не сложно, сам вижу что прога фигня, но понимаешь у нас програмирование было на первом курсе и нас учили так поверхностно (2+2 и т.д.), а щас через два года опять началось и ничего не объясняя начали проги довать писать.
A.G. потому что именно в Builder'e програмируем.

Как вообще перевести из 4 -> 2 -> 3?

_________________
[url=http://restoranam.net]кулинарные рецепты[/url]


 

Member
Статус: Не в сети
Регистрация: 02.07.2003
Цитата:
Как вообще перевести из 4 -> 2 -> 3?

На бумаге чтобы из 4 в 2, нужно сначала из 4 в 10(т.е. в нашу с вами обычную), а потом методом деления уголком из 10 в 2.
Аналогично с остальными.

_________________
Seleron, GeForse и Windovs -три любимых слова ламеров.


 

Member
Статус: Не в сети
Регистрация: 04.01.2004
Откуда: msk
void __fastcall TForm1::Button1Click(TObject *Sender)
{
__int64 tmp,zz;
int i,k,m,l;
char a[65],*b;
bool minus;

#define sIN 4
#define sOUT 3

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;
}

delete [] b;
}


 

Member
Статус: Не в сети
Регистрация: 04.01.2004
Откуда: msk
да кстати - правильно из 4 СИ в 2 СИ конвертить так
каждый разряд 4 СИ представляется 2 разрядами двоичной СИ... просто так.. вспомнилось...

например

0=00
1=01
2=10
3=11

ну типо тогда число 331 (в 10 СИ - 61) будет 111101 в двоичной


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 7 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan