"Электронный мозг будет думать за нас точно так же, как электрический стул за нас умирает."
Станислав Ежи Лец
Сегодня пару часов сидел над программой для курсовой работы. Одной из её частей (как мне кажется) должен быть перевод числа из десятичной системы счисления в шестнадцатеричную (Dec -> Hex). Программа считает числа от 0 до 1048575 (FFFFF) включительно. В принципе, получилось, результаты меня удовлетворили. Осталось теперь дело за малым - чтобы эту программу понял не только отладчик, но и сам процессор, в который я собираюсь пихать её (естественно, переделанную под алгоритм считывания контроллера).
Сбрасываю полученный исходный код С++ (конечно, я изобрел велосипед, но, может, кому-то пригодится). Кстати, буду благодарен за поправки и советы как можно сделать её более изящной...
#include <iostream>
int vibor(int e1);
int main()
{
using namespace std;
int x, a1, b1, c1, d1, e1, p;
char response;
cout << "Enter your number: ";
cin >> x;
cout << endl;
a1=0; b1=0; c1=0; d1=0; e1=0;
p=x/65536;
if (p>=1)
{
a1=p;
x=x-a1*65536;
a1=vibor (a1);
} else a1=48;
p=x/4096;
if (p>=1)
{
b1=p;
x=x-b1*4096;
b1=vibor (b1);
} else b1=48;
p=x/256;
if (p>=1)
{
c1=p;
x=x-c1*256;
c1=vibor (c1);
} else c1=48;
p=x/16;
if (p>=1)
{
d1=p;
x=x-d1*16;
d1=vibor (d1);
} else d1=48;
e1=x;
e1=vibor (e1);
if (a1==48 && b1!=48) a1=0;
if (a1==48 && b1==48 && c1!=48) {a1=0; b1=0;};
if (a1==48 && b1==48 && c1==48 && d1!=48) {a1=0; b1=0; c1=0;};
if (a1==48 && b1==48 && c1==48 && d1==48 && (e1!=48 || e1==48)) {a1=0; b1=0; c1=0; d1=0;};
cout << (char)a1 << (char)b1 << (char)c1 << (char)d1 << (char)e1 << endl;
cin >> response;
return 0;
}
int vibor(int e)
{
switch (e)
{
case 0: e=48; break;
case 1: e=49; break;
case 2: e=50; break;
case 3: e=51; break;
case 4: e=52; break;
case 5: e=53; break;
case 6: e=54; break;
case 7: e=55; break;
case 8: e=56; break;
case 9: e=57; break;
case 10: e=65; break;
case 11: e=66; break;
case 12: e=67; break;
case 13: e=68; break;
case 14: e=69; break;
case 15: e=70; break;
}
return e;
}
Станислав Ежи Лец
Сегодня пару часов сидел над программой для курсовой работы. Одной из её частей (как мне кажется) должен быть перевод числа из десятичной системы счисления в шестнадцатеричную (Dec -> Hex). Программа считает числа от 0 до 1048575 (FFFFF) включительно. В принципе, получилось, результаты меня удовлетворили. Осталось теперь дело за малым - чтобы эту программу понял не только отладчик, но и сам процессор, в который я собираюсь пихать её (естественно, переделанную под алгоритм считывания контроллера).
Сбрасываю полученный исходный код С++ (конечно, я изобрел велосипед, но, может, кому-то пригодится). Кстати, буду благодарен за поправки и советы как можно сделать её более изящной...
#include <iostream>
int vibor(int e1);
int main()
{
using namespace std;
int x, a1, b1, c1, d1, e1, p;
char response;
cout << "Enter your number: ";
cin >> x;
cout << endl;
a1=0; b1=0; c1=0; d1=0; e1=0;
p=x/65536;
if (p>=1)
{
a1=p;
x=x-a1*65536;
a1=vibor (a1);
} else a1=48;
p=x/4096;
if (p>=1)
{
b1=p;
x=x-b1*4096;
b1=vibor (b1);
} else b1=48;
p=x/256;
if (p>=1)
{
c1=p;
x=x-c1*256;
c1=vibor (c1);
} else c1=48;
p=x/16;
if (p>=1)
{
d1=p;
x=x-d1*16;
d1=vibor (d1);
} else d1=48;
e1=x;
e1=vibor (e1);
if (a1==48 && b1!=48) a1=0;
if (a1==48 && b1==48 && c1!=48) {a1=0; b1=0;};
if (a1==48 && b1==48 && c1==48 && d1!=48) {a1=0; b1=0; c1=0;};
if (a1==48 && b1==48 && c1==48 && d1==48 && (e1!=48 || e1==48)) {a1=0; b1=0; c1=0; d1=0;};
cout << (char)a1 << (char)b1 << (char)c1 << (char)d1 << (char)e1 << endl;
cin >> response;
return 0;
}
int vibor(int e)
{
switch (e)
{
case 0: e=48; break;
case 1: e=49; break;
case 2: e=50; break;
case 3: e=51; break;
case 4: e=52; break;
case 5: e=53; break;
case 6: e=54; break;
case 7: e=55; break;
case 8: e=56; break;
case 9: e=57; break;
case 10: e=65; break;
case 11: e=66; break;
case 12: e=67; break;
case 13: e=68; break;
case 14: e=69; break;
case 15: e=70; break;
}
return e;
}
Немає коментарів:
Дописати коментар
Примітка: лише член цього блогу може опублікувати коментар.