Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2013, 16:28   #1
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Восклицание Работа с массивом

Есть целое число А. Необходимо представить его в форме двоичных чисел следующим способом. Например есть число А=607

Берем старший разряд 6 и переводим в двоичную форму в четыре разяряда, то есть 0110

Берем меньший разряд 0 и переводим в двоичную форму в четыре разряда - 0000

Берем младший разряд 7 и переводим по тому же алгоритму 0111

В итоге записываем десятичные числа в двоичном представлении, то есть ответ

011000000111

Вот я только пока смог сделать (разделяет число на цифры, и преобразует их в двоичную систему, и то, перевернутую):
Код:
program lvl1_8;
uses crt;
var a, b, s, i, n, j, k, p, m:integer;
    mas, mas1: array [1..10] of integer;
begin
readln(a);
b:=a;
while b>0 do
 begin
  b:=b div 10;
  s:=s+1;
 end;

b:=a;
i:= 0;
j:=0;

while a > 0 do
 begin
  i := i + 1;
  mas[i] := a mod 10;
  a := a div 10;

  while mas[i]>=1 do
  begin
    j:=j+1;
    mas1[j]:=mas[i] mod 2;
    mas[i]:=mas[i] div 2;
    write(mas1[j])
  end;
 end;

end.
glebast вне форума Ответить с цитированием
Старый 20.02.2013, 16:53   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так устроит?
Код:
program lvl1_8;
uses crt;
const 
BinStr : array[0..9] of string[4] =
(
 '0000',
 '0001',
 '0010',
 '0011',
 '0100',
 '0101',
 '0110',
 '0111',
 '1000',
 '1001');

var a, b : longint;
  s : string;
begin
  readln(a);
  b:=a;
  repeat
    s := BinStr[b mod 10] + s;
    b := b div 10;
  until b=0;

  WriteLn(s);
  Readln
end.

не нравятся константы?
Так никто не мешает использовать функцию перевода числа в двоичный вид:
Код:
program lvl1_8;
uses crt;

function int2Bin(l: longint): string;
var
  i: integer;
  s: string[4];
begin
  s := '';
  for i := 1 to 4 do begin
    if odd(l) then
      s := '1' + s
    else
      s := '0' + s;
    l := l div 2;
  end;
  int2Bin := s;
end;

var a, b : longint;
  s : string;
begin
  readln(a);
  b:=a;
  repeat
    s := int2Bin (b mod 10) + s;
    b := b div 10;
  until b=0;

  WriteLn(s);
  Readln
end.

Последний раз редактировалось Serge_Bliznykov; 20.02.2013 в 16:55.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивом monkey1631 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 19.04.2010 01:16
Работа с массивом ZOHAN Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 16.04.2010 01:20
Работа с массивом program123 Помощь студентам 2 24.12.2009 17:20
работа с массивом kritik Помощь студентам 10 22.07.2009 20:00