Витя, ученик девятого класса, больше всего на уроках информатики любит переводить числа из десятичной системы счисления в двоичную и подсчитывать количество единиц в получившемся двоичном числе. Но иногда Витя ошибается. Напишите программу, которая проверяла бы его расчеты

Pascal: среда разработки Free Pascal 2.6.0 и Free Pascal 2.6.2; С++: среда разработки Code: Blocks 13.12 MinGW, MS Visual Studio 2010 Express Edition; Far manager v3.0.;

задан 13 Окт '17 0:28

изменен 13 Окт '17 10:26

Та программа, пример которой я привёл, легко пишется на Паскале.

(13 Окт '17 14:09) falcao
10|600 символов нужно символов осталось
0

Здесь не уточнено, к сожалению, какие программные средства можно использовать. Будем считать, что программа умеет отличать чётные числа от нечётных и делить на 2. Подадим на вход число n. Заведём "флажок" в виде переменной x, которой присвоим значение 0. Он будет показывать в конечном итоге чётность числа единиц в двоичной записи числа.

Если подано чётное число, то разделим его на 2. При этом с двоичной записи в конце мы "списали" 0, и ничего не поменялось. Если n нечётно, то вычитаем 1, меняем состояние "флажка" противоположное (x на 1-x), и делим результат пополам. Так действуем, пока "текущее" число не обнулится.

Вот пример программы для Maple в виде процедуры:

scc:=proc(n)

local nn,x:

nn:=n:

x:=0:

while nn > 0 do

if nn mod 2 = 0 then nn:=nn/2

else nn:=(nn-1)/2:

x:=1-x

fi

od:

x

end:

ссылка

отвечен 13 Окт '17 1:11

10|600 символов нужно символов осталось
Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

Математика - это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.

Присоединяйтесь!

отмечен:

×91

задан
13 Окт '17 0:28

показан
236 раз

обновлен
13 Окт '17 14:09

Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии

Дизайн сайта/логотип © «Сеть Знаний». Контент распространяется под лицензией cc by-sa 3.0 с обязательным указанием авторства.
Рейтинг@Mail.ru