Форум » Циклы и ветвления » диагностика от 26.01 - бинарное представление » Ответить

диагностика от 26.01 - бинарное представление

SergJP: Коллеги, подскажите, как средствами АВС Паскаля получить двоичное представление цифры? Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество значащих цифр в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.) var x,cnt: integer; begin readln(x); cnt := 0; while x > 0 do begin cnt:=cnt + x mod 2; x := x div 10 end; writeln(cnt) end.

Ответов - 3

oval: Коллеги, подскажите, как средствами АВС Паскаля получить двоичное представление цифры? цифры или числа? стандартных средств нет, на сколько я помню если в эту программу добавить переменную типа string и исправить x := x div 10 на x := x div 2, то получим строку, изображающую двоичную запись числа как-то так: [pre2]var x,cnt: integer; s:string; begin readln(x); s:=''; cnt := 0; while x > 0 do begin cnt:=cnt + x mod 2; s:= inttostr(x mod 2)+s; x := x div 2 end; writeln(cnt); writeln(s) end.[/pre2]

Lavanda: Здесь, как мне кажется, нужно найти ошибку в программе? Это ведь задание 24(С3)? Строку "cnt:=cnt + x mod 2;" нужно заменить на "cnt:=cnt + 1;" - это первая ошибка Строку "x := x div 10" нужно заменить на "x := x div 2" - это вторая ошибка

oval: Lavanda пишет: Это ведь задание 24(С3)? только С1 Строку "cnt:=cnt + x mod 2;" нужно заменить на "cnt:=cnt + 1;" - это первая ошибка да, просмотрела про количество значащих цифр, решила что надо считать количество единиц в двоичной записи числа вопрос был о получении двоичного представления числа, вдруг ошибки сами исправили




полная версия страницы