Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1 / 1 / 2
Регистрация: 12.04.2010
Сообщений: 121
1

Программа выводит каждый элемент цикла в двоичной системе счисления

13.08.2011, 14:59. Показов 1475. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа выводит каждый элемент цикла в двоичной системе счисления. Как сделать, чтобы она выводила пятизначные значения, добавляя нули. Например, если 4 в двоичной системе счисления будет
100, то на экране было бы 00100, или 5 в десятичной будет 101, то вывелось бы 00101.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Program F;
uses crt;
var b:array[1..255] of byte;
    i,n,s,k:byte;
Begin
clrscr;
For s:=1 To 10 Do
 begin
  k:=s; //не нужно издеваться над счетчиком цикла...
  n:=0;
  While k>0 Do
   begin
    n:=n+1;
    b[n]:=k mod 2;
    k:=k div 2;
   end;
  For i:=n Downto 1 Do
  Write(b[i]);
  writeln;
 end;
readln
End.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.08.2011, 14:59
Ответы с готовыми решениями:

Если строка является изображением целого числа в восьмеричной системе счисления, то перевести ее в целое число в двоичной системе счисления
Вводится строка символов. Если она является изображением целого числа в восьмеричной системе...

Как создать Программа-калькулятор для чисел в двоичной системе счисления
Программа-калькулятор для чисел в двоичной системе счисления

Программа должна вывести представление переданного её числа в нега-двоичной системе счисления
Нега-двоичная система счисления – это система счисления с основанием (-2). Основное преимущество...

Выводит элемент массива типа инт в 16-ой системе счисления
array<<" "<<array выводит эти числа в 16-ой системе. Все переменные типа инт. i_max=i; ...

13
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
13.08.2011, 15:02 2
Pascal
1
2
 For i:=n+2 Downto 1 Do
  Write(b[i]);
0
1 / 1 / 2
Регистрация: 12.04.2010
Сообщений: 121
13.08.2011, 15:08  [ТС] 3
Цитата Сообщение от Puporev Посмотреть сообщение
Pascal
1
2
 For i:=n+2 Downto 1 Do
  Write(b[i]);
Это для трёхзначных чисел, а если к примеру 1001, то получится шестизначное число, а мне нужно пятизначное.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
13.08.2011, 15:12 4
Да уж...
Pascal
1
2
For i:=5 Downto 1 Do
  Write(b[i]);
1
1 / 1 / 2
Регистрация: 12.04.2010
Сообщений: 121
13.08.2011, 15:28  [ТС] 5
а как сделать, чтобы программа подсчитывала количество единиц в двоичном числе, и, если количество единиц нечётно, то она добавляла бы единицу к числу?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
13.08.2011, 15:29 6
Цитата Сообщение от Стас45rus Посмотреть сообщение
то она добавляла бы единицу к числу?
Куда добавлять? В начало, в конец, в середину?
0
1 / 1 / 2
Регистрация: 12.04.2010
Сообщений: 121
13.08.2011, 15:30  [ТС] 7
в конец
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
13.08.2011, 15:37 8
А числа в итоге все равно 5-значные будут, или 6-значные?
0
1 / 1 / 2
Регистрация: 12.04.2010
Сообщений: 121
13.08.2011, 15:41  [ТС] 9
шестизначные. если количество единиц чётное, то добавить сзади нуль, а если нечётное, то добавить в конец единицу.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
13.08.2011, 15:47 10
Ничего не понял, нужно толково и полностью писать задание, а не выдумывать на ходу, вот это посмотри.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Program F;
uses crt;
var b:array[1..255] of byte;
    i,n,s,k,ed,j:byte;
Begin
clrscr;
For s:=1 To 10 Do
 begin
  k:=s;
  n:=0;
  ed:=0;
  While k>0 Do
   begin
    n:=n+1;
    b[n]:=k mod 2;
    if b[n]=1 then ed:=ed+1;
    k:=k div 2;
   end;
  if odd(ed) then
   begin
    n:=n+1;
    for j:=n downto 2 do
    b[j]:=b[j-1];
    b[1]:=1;
   end;
  if n<5 then
  for j:=n+1 to 5 do
  b[j]:=0;
  For j:=5 Downto 1 Do
  Write(b[j]);
  writeln;
 end;
readln
End.
Добавлено через 3 минуты
Или так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Program F;
uses crt;
var b:array[1..255] of byte;
    i,n,s,k,ed,j:byte;
Begin
clrscr;
For s:=1 To 10 Do
 begin
  k:=s;
  n:=0;
  ed:=0;
  While k>0 Do
   begin
    n:=n+1;
    b[n]:=k mod 2;
    if b[n]=1 then ed:=ed+1;
    k:=k div 2;
   end;
  n:=n+1;
  if odd(ed) then  //1 в начало(пока в конец)
   begin
    for j:=n downto 2 do
    b[j]:=b[j-1];
    b[1]:=1;
   end
  else  //0 в конец(пока в начало)
   begin
    for j:=1 to n-1 do
    b[j]:=b[j+1];
    b[n]:=0;
   end;
  if n<6 then
  for j:=n+1 to 6 do
  b[j]:=0;
  For j:=6 Downto 1 Do
  Write(b[j]);
  writeln;
 end;
readln
End.
0
1 / 1 / 2
Регистрация: 12.04.2010
Сообщений: 121
13.08.2011, 15:55  [ТС] 11
программа выдаёт пятизначные значения, а нужно шестизначные
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
13.08.2011, 15:56 12
А второй вариант?
1
1 / 1 / 2
Регистрация: 12.04.2010
Сообщений: 121
13.08.2011, 16:13  [ТС] 13
а второй вариант выдаёт шестизначные.спасибо большое!!!
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
26.08.2011, 14:10 14
Ладно, переделаю ту программу.

Добавлено через 48 минут
Вот, посмотри.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Program FF;
uses crt;
const n=27;
{коды прописных английских и пробела}
const alf:array[1..n] of byte=(65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,
                       88,89,90,32);
var ik,zk:array [1..n] of string;{если хотим не просто вывести, а сохранить, лучше массивы строк}
    i,m,k,ed,j:byte;
    f:text;
Begin
clrscr;
assign(f,'cody.txt');
rewrite(f);
writeln(f,'-----------------------------');
writeln(f,'| Simvol|   7byt  |   8byt   |');
writeln(f,'-----------------------------');
For i:=1 To n Do
 begin
  {составляем исходные 7-битовые коды}
  k:=alf[i];
  ik[i]:='';
  ed:=0;
  While k>0 Do
   begin
    ik[i]:=ik[i]+chr(k mod 2+48);
    if k mod 2=1 then ed:=ed+1;
    k:=k div 2;
   end;
  while length(ik[i])<7 do
  ik[i]:='0'+ik[i];{добавляем ноли в начало
                    это только для пробела, остальные и так по 7 символов}
  if i=n then write(f,'| spase |'){выводим в файл, на экран не войдет}
  else write(f,'|',chr(alf[i]):4,'   |');
  write(f,ik[i]:8,' |');
 {составляем зашищенные 8-битовые коды}
  zk[i]:=ik[i];
  if odd(ed) then zk[i]:=zk[i]+'1' {1 в конец)}
  else zk[i]:=zk[i]+'0'; {0 в конец}
  writeln(f,zk[i]:9,' |');
 end;
close(f);
readln
End.
1
26.08.2011, 14:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2011, 14:10
Помогаю со студенческими работами здесь

Проверить правильность ввода числа в двоичной системе счисления и перевести это число из двоичной системы в десятичную
Здравствуйте! Подскажите, пожалуйста, как исправить код, чтобы выполнялось задание. Делала на...

Заменить каждый элемент списка на его запись в шестнадцатеричной системе счисления
Дан список, содержащий запись неотрицательных целых чисел в двоичной системе счисления. Заменить...

Заменить каждый элемент списка на его запись в шестнадцатеричной системе счисления.
Дан список, содержащий запись неотрицательных целых чисел в двоичной системе счисления. Заменить...

Заменить каждый элемент списка на его запись в шестнадцатеричной системе счисления
Помогите пожалуйста! Дан список,содержащий запись целых неотрицательных чисел в двоичной системе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru