четвер, 13 листопада 2014 р.

Програми на мові Pascal переходу чисел в різні системи числення.


Двійкова система числення. Десяткова система числення.

Задача N2_N10. Переведіть  натуральне число із двійкової системи числення в десяткову систему числення, використовуючи мову Pascal.
Технічні умови.  З клавіатури вводяться  числа із двійкової системи числення, використовуючи цілий тип даних longint. На виході  отримуємо це ж число, що записане у десятковій системі числення.
Приклад.  А)Введення:112, виведення:310;Б) Введення:10102, виведення:1010;  В)Введення:11112, виведення:1510; Г) Введення:100002 , виведення:1610. 
Розв’язання. Спосіб 1.
program n2_n10;
var  n10, n2,  ost, k : longint;
begin
write( Введіть натуральне число в двійковій системі  із цифр  1 та  0,   n2=: ');
 read(n2); k:=1;  n10:=0;  while n2 > 0 do
begin
ost:= n2 mod 10;   if  ost=1 then  n10:= ost*k+n10;
n2:= n2 div 10;   k:= k*2; end;
writeln('  Число в десятковій  системі  має запис  n10 = ', n10);
end.

Спосіб 2. 
var a : string;

function BIN_DEC(x:string):longint;
const digits:array [0..1] of char = ('0','1');
var res,ves:longint; i,j:byte;
begin
   res:=0; ves:=1;
   for i:=length(x) downto 1 do begin
      j:=0;
      while (digits[j]<>x[i]) do inc(j);
      res:=res+ves*j;
      ves:=ves*2;
   end;
   BIN_DEC:=res;
end;

begin { основная программа }
  readln( a );
  writeln( BIN_DEC(a) );
end.

Задача N10_N2. Переведіть  натуральне число із десяткової  системи числення в двійкову систему числення , використовуючи мову Pascal.
Технічні умови.  З клавіатури вводяться  числа в десятковій системи числення, використовуючи цілий тип даних longint. На виході  отримуємо це ж число, що записане у двійковій системі числення.
Приклад.  А)Введення:310, виведення:112; Б)Введення:1010, виведення:10102
В)Введення:1510, виведення:11112; Г) Введення:1610,  виведення:100002. 
Розв’язання. Спосіб 1.
program n10_n2;
var a, b, n10, n2,  ost, k : longint;
begin
write( Введіть натуральне число в десятковій  системі  числення  із цифр:  1,2,3,4,5,6,7,8,9,0,  n10=  ');
 read (n10);   k:=1; n2:=0;    while n10 > 0 do
begin
        ost:= n10 mod 2;   n10:= n10 div 2;  n2:= ost*k+n2;
        k:= k*10; 
end;
         writeln('   Число в двійковій  системі числення  має запис  n2 = ',n2);
         end.
Спосіб 2.
var a : longint;

function DEC_BIN(x:longint):string;
const digits:array [0..1] of char = ('0','1');
var res:string; d:0..1;
begin
   res:='';
   while (x<>0) do begin
      d:=x mod 2; res:=digits[d]+res;
      x:=x div 2;
   end;
   DEC_BIN:=res;
end;

begin { основная программа }
  readln( a );
  writeln( DEC_BIN(a) );
end.

Задача N10_N16. Переведіть  натуральне число із десяткової системи числення в 16-ову систему числення, використовуючи мову Pascal.

var a : longint;

function DEC_HEX(x:longint):string;
const digits:array [0..15] of char = ('0','1','2','3','4','5','6','7',
                                      '8','9','A','B','C','D','E','F');
var res:string; d:0..15;
begin
   res:='';
   while (x<>0) do begin
      d:=x mod 16;
      x:=x div 16;
      res:=digits[d]+res;
   end;
   DEC_HEX:=res;
end;

begin { основная программа }
  readln( a );
  writeln( DEC_HEX(a) );
end.

Задача N16_N10. Переведіть  натуральне число із 16-вої системи числення в 10-ову систему числення, використовуючи мову Pascal.

var a : string;

function HEX_DEC(x:string):longint;
const digits:array [0..15] of char =
      ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
var res,ves:longint; i,j:byte;
begin
   res:=0; ves:=1;
   for i:=length(x) downto 1 do begin
      j:=0; a[i]:=UpCase(a[i]);
      while (digits[j]<>x[i]) do inc(j);
      res:=res+ves*j;
      ves:=ves*16;
   end;
   HEX_DEC:=res;
end;

begin { основная программа }
  readln( a );
  writeln( HEX_DEC(a) );
end.

Контрольні запитання.
1.    Наведіть синтаксис запису циклів з лічильником мовою Pascal?
2.    Наведіть синтаксис запису циклів з передумовою мовою Pascal?
3.    Наведіть синтаксис запису циклів з післяумовою мовою Pascal?
4.    Як записуються  розгалуження мовою Pascal?
5.    Як записуються  складені логічні  умови у форматі  if then else..;, що об'єднують декілька простих логічних умов?
6.    Наведіть синтаксис оператора одноальтернативного  розгалуження.
7.    До яких типів даних не може належати значення виразу-селектора в операторі вибору?
8.    У чому полягає відмінність між циклами з передумовою та циклами з післяумовою?
9.    Якому типу даних може належати лічильник у циклі  for?
10.   Яке значення має лічильник після завершення циклу  for?
11.   Що може спричинити «зациклення» програми?
12.   За яких умов цикли while та for не виконаються жодного разу?
13.   Коли цикл виконується лише один раз?
14.   У чому полягає відмінність між такими операторами циклів, як  for...to...do  та for...downto...do?
15.   Яка структура працює ефективніше: вкладені оператори іf ...then...else чи серія операторів іf...then? Відповідь обґрунтуйте.
16.   Як можна пропустити деякі оператори програми, що належать тілу циклу, не видаляючи ці оператори?
17.   Як підвищити ефективність роботи вкладених структур if...then...else?


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

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