Имя: Пароль:
IT
 
перевод чисел в двоичную систему в паскале
0 program345
 
03.09.14
15:30
доброго дня!
написал прогу для перевода чисел из 10-тичной системы в 2-чную.
только вот она значение выводит наоборот:

var
a,b,c:integer;

  procedure perevod(a:integer);
    var
      b,c:integer;
    begin
      b:=a mod 2;
      write(b);
      c:=a div 2;
      //writeln(c);
      while c>0 do begin
        b:=c mod 2;
        write(b);
        c:=c div 2;
      end;
      
  end;

begin
  writeln('введите десятичное число для перевода в двоичную систему: ');
  readln(a);
  perevod(a);
end.


как исправить?
1 Wobland
 
03.09.14
15:32
>write(b)
ты вот это назвал переводом числа?
2 Timon1405
 
03.09.14
15:34
вынести первое деление за тело цикла это шедевр ящитаю
3 StaticUnsafe
 
03.09.14
15:34
Обратись к toypaul
Он уже научился округлять, может и тебе поможет.
4 Ненавижу 1С
 
гуру
03.09.14
15:36
function perevod(a:integer):string;
    var
      b:integer;
      c,s:string;
    begin
      result:='';
      while a>0 do
      begin
        b:=a mod 2;
        str(b,c);
        result:=c+result;
        a:=a div 2;
      end;        
  end;
5 GROOVY
 
модератор
03.09.14
15:37
(0) Слушай, или учить паскаль на форум по паскалю, а?
http://www.forum.mista.ru/index.php?user_id=98271
6 NikVars
 
04.09.14
11:21
(5) Если еще разок запостит схожую тему - забань его на годик.
7 Крошка Ру
 
04.09.14
11:37
(5)(6) Вы несправедливы. Ну изучает человек программирование на ископаемом языке, ну не может найти тематический форум (может его в гугле забанили, почем знать?), ну наткнулся на мисту, что ж теперь сделаешь? И потом, кто нам пятничное настроение будет создавать?
8 Крошка Ру
 
04.09.14
11:38
Это же прелесть:
>>написал прогу для перевода чисел из 10-тичной системы в 2-чную
>>как исправить?
9 Cube
 
04.09.14
11:40
(5) (6) А что такого? С каких пор на мисте запрещены другие языки программирования?
10 NikVars
 
04.09.14
11:41
(7) Да, я такой. И вообще, миста детям не игрушка.
11 Трик
 
04.09.14
11:41
(5)(6) надо расщиряться.
Миста- волшебный форум :).
Даешь отделные секции под другие языки :)
12 Cube
 
04.09.14
11:43
(10) А пенсионерам не забава!))
13 NikVars
 
04.09.14
11:44
(11) А я думал, что тут можно не только языком.
(12) Хм-м-м-м, до нее еще одинэсить и одинэсить...
14 _fvadim
 
04.09.14
11:53
почему про формулу-1 можно, а про паскаль нельзя?
для многих ностальгия опять же.
15 NikVars
 
04.09.14
12:06
(14) Это тима типа: Папа купил мне спорткар, ключи есть, подскажите как открыть дверь и куда ключ вставить чтобы завести?!
16 _fvadim
 
04.09.14
12:10
(15) злой ты, это тема "мама, папа, смотрите как я умею".
и это гораздо лучше, чем изливать желчь в темах типа Крыша едет. Почему Окр(0,36472,2,1) = 0.36?
17 NikVars
 
04.09.14
12:42
(16) Эх-х... Проморгал темку...
:))
18 Крошка Ру
 
04.09.14
13:20
(15) (16) Гораздо больше надоели темы, типа "а помогите выбрать шапочку для бассейна". Не понимаю, почему человек может открыть форум и не может открыть гугл.
19 Крошка Ру
 
04.09.14
13:21
А паскаль - это весело. Опять же, как верно упомянуто - ностальгия
20 Wobland
 
04.09.14
13:28
(18) когда я прошу девушку помочь сварить мне борщ, это вовсе не значит, что мне нужен борщ ;)
21 GROOVY
 
04.09.14
13:32
Ок. Был не прав.

А ктонить подскажет как перевесить дверь на холодильнике?
22 Wobland
 
04.09.14
13:33
(21) проще перевернуть
23 Cube
 
04.09.14
13:34
(21) Флуд в тематических ветках запрещен)))
Ты что, не выспался сегодня? :)
24 Крошка Ру
 
04.09.14
13:41
(20) Так, то - борщ с девушкой, а то - форум с шапочкой...
Для меня такие сочетания не взаимозаменяемы. ;)
25 Asmody
 
04.09.14
13:49
выкинь паскаль, пользуйся javascript:

(12).toString(2)
26 дедушка Вах
 
04.09.14
14:25
(0) теперь переводчик исходных текстов в машинные коды пиши, типа "введите текст:"
27 HeroShima
 
04.09.14
15:35
(0) Рекурсия написана как-то коряво.
28 program345
 
05.09.14
14:42
(4) а зачем использовать result:=''; ?
29 program345
 
05.09.14
14:42
вот мой вариант:
var
  a,b,c:integer;
  procedure perevod(a:integer);
    var
      b,e:integer;
      c,d:string;
    begin
      if a<=0 then
        writeln('введенное число должно быть положительно и больше нуля!!!');
      while a>0 do begin
        b:=a mod 2;
        str(b,c);
        d:=d+c;
        a:=a div 2;
      end;
        e:=length(d);
        for e:=e downto 1 do begin
          write(d[e]);
        end;
  end;
  
begin
  writeln('введите число для перевода из 10-ти значного в 2-ух значное');
  readln(a);
  perevod(a);
end.
30 NikVars
 
05.09.14
14:48
(29) Дитё! Вот тебе мой подзатыльник! Тебе за использование переменных, которые не отражает суть задачи нужно дополнительно 100 раз отжаться перед решением каждой задачи и 100 задач дать на решение. А за то, что ты одни и теже переменные впихиваешь в процедуру и в основную часть программы говорит о твоей неаккуратности, только сам себя путаешь.
31 User_Agronom
 
05.09.14
14:51
(20) Борщ - это мой метод! Авторские права соблюдай!
32 program345
 
05.09.14
14:53
(30) так то лучше:

var
  a:integer;
  procedure perevod(a:integer);
    var
      b,e:integer;
      c,d:string;
    begin
      if a<=0 then
        writeln('введенное число должно быть положительно и больше нуля!!!');
      while a>0 do begin
        b:=a mod 2;
        str(b,c);
        d:=d+c;
        a:=a div 2;
      end;
        e:=length(d);
        for e:=e downto 1 do begin
          write(d[e]);
        end;
  end;
  
begin
  writeln('введите число для перевода из 10-ти значного в 2-ух значное');
  readln(a);
  perevod(a);
end.
33 NikVars
 
05.09.14
14:56
(32) Удали лишние переменные. Минимизируй количество переменных.
34 program345
 
05.09.14
15:08
(33) все! меньше сложно уже думать...:
предлагаем не стисняемся




var
  a:integer;
  procedure perevod(a:integer);
    var
      e:integer;
      c,d:string;
    begin
      if a<=0 then
        writeln('введенное число должно быть положительно и больше нуля!!!');
      while a>0 do begin
        str(a mod 2,c);
        d:=d+c;
        a:=a div 2;
      end;
        e:=length(d);
        for e:=e downto 1 do begin
          write(d[e]);
        end;
  end;
  
begin
  writeln('введите число для перевода из 10-ти значного в 2-ух значное');
  readln(a);
  perevod(a);
end.
35 NS
 
05.09.14
15:14
var c:char;
while a>0 do begin
        c=chr((a mod 2)+ord('0'));
        d:=c+d;
        a:=a div 2;
end;
writeln(s);
36 program345
 
08.09.14
15:20
ну или так: слизано и переделано с сайта http://pas1.ru/decproc


var
    k: integer;
    s: byte;

procedure scale (a: integer);
    begin
            if a > 1 then
                scale (a div 2);
            write (a mod 2)
    end;

begin

    write ('Введите число: ');
    readln (k);

    scale (k);

readln
end.
37 program345
 
08.09.14
15:21
или даже так:

var
  k: integer;

procedure scale(a: integer);
begin
  if a > 1 then
    scale(a div 2);
  write(a mod 2)
end;

begin
  write('Введите число: ');
  readln(k);
  scale(k);
  readln
end.
38 Wobland
 
08.09.14
15:25
> слизано и переделано
ТС на пути к просветлению, однако
39 Андрюха
 
08.09.14
15:45
(0) Юзай стандартную функцию DecToBin
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн