Viết chương trình chuyển đổi hệ cơ số pascal

Nguyên tắc của phương pháp này là lấy số cần chuyển đổi chia cho 2 (kết quả chỉ lấy phần nguyên), sau đó tiếp tục lấy kết quả chia 2 (và cũng chỉ lấy phần nguyên), kết quả số nhị phân thu được là tập hợp các số dư của các phép chia.

Ví dụ : Chuyển số 30 sang hệ nhị phân

Viết chương trình chuyển đổi hệ cơ số pascal

Đầu tiên (ở dòng 1), chúng ta lấy 30 chia 2, kết quả được 15 và số dư là 0.Kế tiếp (ở dòng 2), chúng ta lấy số 15 chia 2, kết quả được 7 và số dư là 1Tiếp theo ở dòng 3, ta lấy số 7 chia 2, kết quả được 3 và dư 1Ta tiếp tục lặp lại quá trình này cho đến khi kết quả chia 2 chúng ta được 0.Số nhị phân chúng ta thu được chính là tập hợp các số dư của các phép chia (lấy từ dưới lên).Số 30 trong hệ nhị phân sẽ là 11110

 

– Nếu n =0 hoặc n=1 thì chuỗi S tương ứng là 0, 1Ngược lại- Lặp lại quá trình chia cho 2 như trên (sử dụng, Mod và div) và ghi kết quả vào xâu S

Cách 1

var n:longint; f:text;
{------- chuong trinh con tinh luy thua -------}

function NP(n:longint):string;
var du:longint;s,tem:string;

begin
  tem:='';s:='';

  if (n=0) or(n=1) then str(n,s)
  else
  while n<>0 do
    begin
       du:=n mod 2;
       n:=n div 2;
       str(du,tem);
       s:=tem+s;
    end;
  NP:=s;
end;

{----Than chuong trinh chinh ------}
begin
{----Doc file ----}
    assign(f,'TP_to_NP.inp'); reset(f);
    read(f,n);close(f);
{----Mo file de ghi----}
    assign(f,'TP_to_NP.out'); rewrite(f);

    write(f,NP(n));

close(f);
end.

Cách 2

Program Thap_Phan_Sang_Nhi_Phan;
Uses Crt;
Var	d:array[1..20] of byte;
i,j,n:integer;

Begin
Clrscr;
Writeln('DOI SO THAP PHAN SANG NHI PHAN:');
Write('Nhap so thap phan la n='); Readln(n);
i:=1; Repeat
d[i]:=n mod 2; n:=n div 2; i:=i+1;
Until(n=0);
Write('So nhi phan la:'); For j:=i-1 downto 1 do Write (d[j]);

Readln;

End.

 

Bài 1: Chuyển 1 số từ hệ thập phân sang nhị phân.

Program DOI_THAP_PHAN_SANG_NHI_PHAN;
Uses Crt;
Var d:array[1..20] of byte;
         i,j,n:integer;
Begin
        Clrscr;
        Writeln('DOI SO THAP PHAN SANG NHI PHAN:');
        Writeln('------------------------------------');
        Write('Nhap so thap phan la n='); Readln(n);
         i:=1;
       Repeat
             d[i]:=n mod 2;
             n:=n div 2;
             i:=i+1;
       Until(n=0);
       Write('So nhi phan la:');
        For j:=i-1 downto 1 do
           Write (d[j]);
        Readln;
End.


Bài 2: Chuyển 1 số từ hệ thập phân sang bát phân.

Program DOI_THAP_PHAN_SANG_BAT_PHAN;
Uses Crt;
Var d:array[1..20] of byte;
        i,j,n:integer;
Begin
       Clrscr;
        Writeln('DOI SO THAP PHAN SANG BAT PHAN:');
       Writeln('-------------------------------');
       Write('Nhap so can doi n = ');Readln(n);
       i:=1;
       Repeat
           d[i]:=n mod 8;
           n:=n div 8;
           i:=i+1;
       Until n=0;
       Write('So bat phan la:');
         For j:=i-1 downto 1 do
             Write(d[j]);
        Readln;
End.

Biểu diễn số thập phân: 253, 458, 1047, 3259 (2đ) 

Biểu diễn có số nhị phân: 1011, 11011, 11101,1010 (2đ) 

Biểu diễn các hệ số 16 (Hexa): 1AF, 2BD, 1BC, 2EF (2đ) 

Chuyển đổi các hệ cơ số 10 sang cơ số 2: 7, 9, 21, 27 (2đ) 

Chuyển đổi các hệ cơ số 10 sang hệ Hexa: 45,125, 235, 435 (2đ) 

Xem chi tiết

- Hệ cơ số 2: Nếu như hệ thập phân dùng 10 chữ số để ghi số thì hệ cơ số 2 chỉ dùng hai chữ số là 0 và 1 để ghi số.

    + Đổi một số từ cơ số 2 sang cơ số 10:

    + Đổi một số từ cơ số 10 sang cơ số 2:

- Hệ cơ số bất kỳ:

- Vấn đề cộng, trừ, nhân, lũy thừa số lớn (hoặc kết quả được số lớn) được xem xét riêng ở một chuyên đề (sau khi được trang bị dữ liệu kiểu string).

B. BÀI TẬP:

Bài tập 8.1:

Gọi abcd là một số có 4 chữ số. Hãy lập chương trình tìm tất cả các số có 4 chữ số thỏa mãn biểu thức: abcd=(ab + cd)2

Ví dụ: số 2025=(20 + 25)2.

Thuật toán:

Kiểm tra tất cả các số có bốn chữ số theo các cách sau:

    - Tách lấy hai số đầu, hai số sau của số có bốn chữ số để kiểm tra.

    - Kiểm tra các trường hợp có thể của mỗi chữ số.

Bài tập 8.2:

Viết chương trình cho nhập hai số tự nhiên N và k. Hãy cho biết chữ số thứ k tính từ trái sang phải trong số N là số mấy? nếu k lớn hơn độ dài của N hoặc k bằng 0 thì thông báo không tìm được.

Ví dụ 1:

Với N và k được nhập: N = 65932, k = 4

Kết quả tìm được là 3.

Ví dụ 2:

Với N và k được nhập: N = 65932, k = 10

Kết quả tìm được là -1 ( k lớn hơn độ dài số N).

Bài tập 8.3:

Một số được gọi là số bậc thang nếu biểu diễn thập phân của nó có nhiều hơn một chữ số đồng thời theo chiều từ trái qua phải, chữ số đứng sau không nhỏ hơn chữ số đứng trước. Viết chương trình in ra các số bậc thang trong đoạn [n1, n2] với n1, n2 được nhập từ bàn phím.