вівторок, 24 лютого 2015 р.

Hex

(Джерело: http://www.olymp.vinnica.ua/index_ua.php?lng=ua&cid=103)

Задача. Дано число Ch  в десятковій системі числення.  Написати програму що переводить дане число в систему числення з основою m.

Технічні умови. Програма читає  з клавіатури в першому рядку число m (2≤m≤16), в другому - число Ch (0≤Ch≤2+109)  в десятковій системі.  Програма виводить на екран відповідь в вигляді текстового рядка.

Приклад.
Введення:
16
1024
Виведення:
400
Розв'язання
Задача обернена до попередньої (Nhex).
Щоб перевести число 1024 з 10-вої системи числення в 16-ву потрібно послідовно ділити 1024 та отримані частки на 16 доти, поки частка не стане меншою за 16. Остання частка і буде першою цифрою отриманого числа, залишки записані в зворотньому порядку - рештою чисел (перший залишок - остання цифра).
Переведемо:
3-тя цифра - 1024:16 = 64*16 + 0;
2-га цифра - 64:16 = 4*16 + 0;
1-ша цифра - 4<16, тому ділення завершено і 102410 = 40016.
Запишемо алгоритми мовами програмування.

Free Pascal:
Var M, Z : 2..16;
         Ch : 0..2000000000;
           N : String[31];
Begin
 ReadLn (M);
 Read (Ch);
 N := '';
 Repeat
  Z := Ch mod M;
  Ch := Ch div M;
  If Z < 10
   Then N := Chr (48+Z) + N
   Else N := Chr (55+Z) + N;
 Until Ch = 0;
 Write(N);
End. 

C++:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
 int m, ch, z;
 cin >> m >> ch;
 string n="";
 do
 {
 z=ch%m, ch/=m;
 char c=(z<10) ? (z+48) : (z+55);
 n=c+n;
 }
 while (ch!=0);
 cout << n;
}

Немає коментарів:

Дописати коментар