Помощь - Поиск - Пользователи - Календарь
Полная версия: подсчет едениц из двоичного числа
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
zetsokol
Вот код программы но он считает не правильно



var
X, i, n: Integer;
begin
Readln(X);

n := 0;
for i := 0 to 15 Do
if (($0001 shl i) and X) <> 0 then inc(n);

writeln(n);
end.

volvo
zetsokol,
правда? Может это не код, а ты неправильно считаешь? Я уже говорил, повторяю СПЕЦИАЛЬНО для тебя: я НЕ ПРИНИМАЮ возражения в такой форме !!! Приведи пример, который ты пробовал (и данные, которые вводил), и то, что ты ХОЧЕШЬ получить, и что получил... Иначе, извини, я ничем помочь тебе не могу...

Вот результат прогона:
Цитата(Console)
0
0

7
3

127
7

А вот теперь ТЫ докажи мне, что программа неправильно работает !!! mad.gif
zetsokol
Извени я неправильно наверное тебе пояснил.

Сосчитать количество единиц в двоичной записи числа i.

Например:

00111011

ответ:

5 едениц
volvo
zetsokol, специально для тебя - повторяю:
"00111011"(2) = 59(10)

Вводишь в мою программу число 59 и получаешь 5... Не может Паскаль работать с числами в системе счисления 2... Если тебе надо было нечто другое - нужно было ПРАВИЛЬНО задавать вопрос, а не утверждать, что программа работает неверно.
zetsokol
Еще раз сори. Я не про то что прога работает не верно просто считала не то что надо было мне.

На счет двоичной системы счисления - водить число нужно только еденицы пусть в 10 системе. Поставить проверку не трудно
volvo
Попробуй вот так:
var
s: string;
i, count: integer;

begin
write('n = '); readln(s);

count := 0;
for i := 1 to length(s) do
if s[i] = '1' then inc(count)
else
if s[i] <> '0' then begin
writeln('error: illegal input'); halt;
end;

writeln('count = ', count)

end.
zetsokol
спасибо Volvo по идее должно работать. Что-то я сам про это не додумался, я тока про целый тип думал good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.