• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программа на паскале

Статус
В этой теме нельзя размещать новые ответы.

ww01031977

Новые
Регистрация
22 Янв 2008
Сообщения
553
Реакции
2
Баллы
0
Программа на паскале

найти количество чисел не больше N, которые имеют в двоичном виде 3 ноля.

вот что получилось:
но не правильно работает. помогите

program zero;
uses crt;
var b:array [1..255] of integer;
l,t,n,i,k,j:integer;
begin
clrscr;
write('Vvedite t=');
readln(t);
i:=0; k:=0; l:=0; j:=2;
while j<=t do
begin
while j>=1 do
begin
i:=i+1;
b:=j mod 2;
j:=j div 2;
if b=0 then k:=k+1;
end;
{end; }
if k=3 then
begin
l:=l+1;
{writeln(j);}
n:=i;
for i:=n downto 1 do
writeln(b);
end;
writeln('kolichestvo=',l);
j:=j+1;
end;
{end;}
{end; }

end.
 
Ох, Вы и накрутили... Попытался разобраться - запутался. Пока предложу свой вариант решения задачки:
Код:
VAR
 N,Ncur:LongInt;
 Num,Zer_Num:Word;
 Md:Byte;

BEGIN
 Write('N (>7) = ');
 ReadLn(N);
 Inc(N);
 Num:=0;
 Repeat
  Dec(N);
  Ncur:=N;
  Zer_Num:=0;
  Repeat
   Md:=Ncur mod 2;
   if Md=0 then Inc(Zer_Num);
   Ncur:=Ncur div 2;
  Until Ncur=0;
  If Zer_Num=3 then Inc(Num);
 Until N=8;
 Writeln('Num= ',Num);
 ReadLn;
END.
 
Спасибо. подойдет...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху