Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail



Ответ
 
Опции темы
Старый 14.07.2017, 00:42   #1
MachineMan
Новичок
 
Регистрация: 14.07.2017
Сообщений: 1
Репутация: 10
По умолчанию [Pascal] типы данных,не работает программа

Исправте пожалуйста и обьясните в чём моя ошибка
Для чего нужна программа:
дано целое положительное число,программа выводит сколько в двоичной записи этого числа единиц(пр-р:дано число 138,в двоичной сс оно 10001010,программа выведет 3 т.к. 3и единицы)
Код:

program u1;
var
b,a,y,i:real;


begin
i:=1;
b:=0;
write('Введите число ');
writeln('a=');
read(a);
y:=a mod 2;
if y=0 then
a:=a else
 begin
 a:=a-1;
 b:=b+1
 end;
while i<a do
 begin
 i:=i*2;
 end;
i:=i/2;
a:=a-i;
b:=b+1;
while a>0 do
 begin
  if i<a then
  begin
  a:=a-i;
  b:=b+1;
  i:=i:2;
  end
  else
  i:=i:2;
 end
end.

p.s.
Если чтото неправильно в коде то обьясните пожалуйста
p.s.s
Подкиньте литературу для паскаля чтобы я закрыл свой пробел

Последний раз редактировалось MachineMan; 14.07.2017 в 00:44.
MachineMan вне форума   Ответить с цитированием
Старый 14.07.2017, 11:09   #2
CMY_3
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 29
Репутация: 51
По умолчанию

Код:

 
var
a,i:integer;
 
. . .
{                          
while a>0 do begin
  if a mod 2 = 1 then inc(i);
  a := a div 2;
end;                      
}
while a>0 do begin
  if a and 1 = 1 then inc(i);
  a := a shr 1;
end;


Последний раз редактировалось CMY_3; 14.07.2017 в 11:14.
CMY_3 вне форума   Ответить с цитированием
Старый 14.07.2017, 11:15   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 22,819
Репутация: 5078
По умолчанию

в задании
Цитата:
Сообщение от MachineMan Посмотреть сообщение
дано целое положительное число
а Вы зачем вещественный тип берёте?

Цитата:
Сообщение от MachineMan Посмотреть сообщение
Код:

b,a,y,i:real;

real - это тип для вещественных (дробных) чисел.

Вам нужен целочисленный тип. Например, Integer.

но дальше не лучше.

Цитата:
Сообщение от MachineMan Посмотреть сообщение
if y=0 then
a:=a
Это что за ужас, летящий на крыльях ночи?

а для чего все эти вычитания, сложения и т.п.?!

я ваш алгоритм не понимаю.

Вашу задачу надо решать так.
взять алгоритм (или готовый код) для перевода числа в двоичную форму.
выкинуть оттуда собственно формирование результата (это сборка строки - двоичного представления числа), вместо этого нужно поставить счётчик.

вот так:
Код:

program u1;
var
  n, a, count_bit : integer;


begin

   Write('Введите целое положительно число a: ');
   ReadLn(a);
   
   count_bit := 0;
   n:=a;
   while n>0 do begin
     if (n mod 2)<>0 then Inc(count_bit);
     n := n div 2
   end;
   
   WriteLn('Число единиц в двоичном представлении числа ',a,' = ', count_bit );
   
end.



Цитата:
Сообщение от MachineMan Посмотреть сообщение
Подкиньте литературу для паскаля чтобы я закрыл свой пробел
верхняя тема в этом разделе: Литература
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает программа Pascal ABC(функция) kseenq Помощь студентам 2 05.12.2014 03:54
Работа со строками(Pascal)(не работает программа) mxax Помощь студентам 1 29.12.2011 18:25
Pascal.Нестандартаные типы данных. Связанные списки. kelly Помощь студентам 1 15.12.2011 11:01
Не могу разобраться как работает программа (Pascal ABC) Amid1990 Помощь студентам 1 04.07.2011 01:42




05:31.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru