Помощь - Поиск - Пользователи - Календарь
Полная версия: подсчет едениц из двоичного числа
Форум «Всё о Паскале» > 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.