IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Помогите разобраться с кодом, Паскаль
Wolfram
сообщение 17.2.2010, 13:14
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 1
Регистрация: 8.9.2009
Город: Россия
Вы: студент



Дано задание:
Циклически сдвинуть двоичные разряды числа на одну позицию вправо.

Вот код программы, я только кое-что исправил в нем.
Код
uses crt;
function pow2(A:byte):Integer;
var result: Integer;
    i: Integer;
begin
  result := 1;
  for i:=1 to A do
    result := result * 2;
  pow2 := result;
end;

procedure Print_binary (d: word);
var
  mask: word;
  i: 1..16;
begin
  mask:=$8000;
  for i:=1 to 16 do begin
    if d and mask=0 then
     write (0)
    else
     write (1);
    mask:=mask shr 1;
  end;
  writeln;
  writeln;
end;

function cyclicShiftRight(number: word; cyclicBitsRight: byte):word;
var
    mask :Integer;
    x,y :word;
begin
    cyclicBitsRight := cyclicBitsRight mod 16;
    mask := pow2(16) - pow2(16 - cyclicBitsRight);
    y := number and mask;
    y := x shl (16 - cyclicBitsRight);
    x := number shr cyclicBitsRight;
    cyclicShiftRight := y or x;
end;

Var
  a,c: word;
begin
  clrscr;
  a:=55555;
  write ('a = ');
  Print_binary (a);
  c:= cyclicShiftRight(a, 1);
  write ('a = ');
  Print_binary (c);
  readln;
end.

Вроде бы правильно решено.
Просят объяснить назначение процедуры и функций.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 20.4.2024, 10:34

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru