Как найти единицы в числе паскаль

2 / 2 / 0

Регистрация: 04.03.2010

Сообщений: 57

1

Найти количество единиц

16.05.2010, 11:37. Показов 1903. Ответов 3


Студворк — интернет-сервис помощи студентам

Ребята, помогите пожалуйста кто может!
Нужна программа с использованием подпрограммы.
Задание: нужно ввести любое число (например N=245) и сформировать вектор V, который состоит из двоичной формы этого числа (V=11110101 ), после этого подсчитать количество единиц.( x=6)
Помогите пожалуйста, буду очень благодарна



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

16.05.2010, 11:37

3

Demon-red

139 / 139 / 97

Регистрация: 25.01.2010

Сообщений: 181

16.05.2010, 12:09

2

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
uses crt;
var a : longint;
k:integer;
function DEC_BIN(x:longint ;k:integer):string;
const t:array [0..1] of char = ('0','1');
var res:string; d:0..1;
begin
 k:=0;
   res:='';
   while (x<>0) do begin
      d:=x mod 2; res:=t[d]+res;
      x:=x div 2;
      if t[d]='1' then
      inc(k)
   end;
   DEC_BIN:=res;
   writeln('k = ',k);
 
end;
 
begin
clrscr;
 readln( a );
  writeln( DEC_BIN(a,k) );
    readln;
end.



1



Antonio:)))

18 / 18 / 7

Регистрация: 21.01.2010

Сообщений: 58

16.05.2010, 12:17

3

Вот:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var v:string;
    n,i,k:integer;
begin
writeln('vvedite chislo:');
readln(n);
v:='';
  while n>0 do
  begin
     v:=chr(ord('0')+n mod 2)+v;
     n:=n div 2;
  end;
k:=0;
for i:=1 to length(v) do
 begin
   if v[i]='1' then inc(k);
 end;
writeln(v);
writeln(k);
readln;
end.

Добавлено через 1 минуту
Не успел)



1



2 / 2 / 0

Регистрация: 04.03.2010

Сообщений: 57

16.05.2010, 13:36

 [ТС]

4

Спасибо огромное!!!



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

16.05.2010, 13:36

4

Узнай цену своей работы

Формулировка задачи:

Требуется написать программу, которая находит число единиц в введённом числе.

Где ошибка и как её исправить?

Код к задаче: «Найти число единиц в введённом числе»

textual

Листинг программы

var
  n: LongInt;
  c: Integer;
begin
  Write('Введите число: '); ReadLn(n);
  c:=0;
  while n<>0 do begin
    if Abs(n mod 10)=1 then Inc(c);
    n:=n div 10;
  end;
  WriteLn(c);
end.

Полезно ли:

13   голосов , оценка 3.538 из 5

Похожие ответы

  1. Найти наибольшее число M (M>1) на которое сумма цифр числа N делится без остатка.
  2. Подсчитать количество чисел в текстовом файле, дописать в него числа, чтобы их стало 20
  3. Число с максимальным произведением цифр
  4. Напечатать числа в виде следующей таблицы:
  5. Определить, сколько раз в числе встречается его максимальная цифра
  6. Найти сумму бесконечного числового ряда с заданной точностью ε
  7. Дано натуральное число n. Вычислить заданное произведение
  8. Подсчет суммы степеней числа 2 (цикл while/do)
  9. Игра в числа. Не могу понять постановку
  10. Преобразовать двухзначное число из char в integer
  11. Вывести на экран ту из матриц, в которой наибольшее число строк, содержащих одни нули

Определить число единиц во введенном числе.

Паскаль АБС.

На этой странице находится вопрос Определить число единиц во введенном числе?, относящийся к категории
Информатика. По уровню сложности данный вопрос соответствует знаниям
учащихся 10 — 11 классов. Здесь вы найдете правильный ответ, сможете
обсудить и сверить свой вариант ответа с мнениями пользователями сайта. С
помощью автоматического поиска на этой же странице можно найти похожие
вопросы и ответы на них в категории Информатика. Если ответы вызывают
сомнение, сформулируйте вопрос иначе. Для этого нажмите кнопку вверху.

var
  s: string;
  i, k: integer;

begin
  Write(‘Введите произвольное число: ‘); Readln(s);
  k := 0;
  for i := 1 to length(s) do
    if s[i] = ‘1’ then k := k + 1;
  Writeln(‘Количество единиц в числе равно ‘, k);
end.

Тестовое решение:
Введите произвольное число: -156153451.4234111322
Количество единиц в числе равно 6

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    Подсчет количества единиц
    , в двоичном представлении переменной

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    19.01.06, 18:46

      «Напишите функцию для вычисления количества единиц в двоичном представлении переменной типа Word»
      Меня интересует: 1) что это за переменные такие — word? 2) как представить в двоичном виде? 3) как подсчитать количество единиц?
      Т.е. по сути решить всю задачу не знаю как… Если бы была переменная типа string — я бы подсчитал кол-во единиц, а вот как быть с этой задачей?..

      Сообщение отредактировано: volvo877 — 21.01.06, 18:37


      Profi



      Сообщ.
      #2

      ,
      19.01.06, 19:00

        Word — 2 байта, диапазон 0 — 65535.
        Если число сразу в двоичном виде, то проще всего будет Val’ом перевести в строку и посчитать единицы.

        Guru

        volvo877



        Сообщ.
        #3

        ,
        19.01.06, 19:10

          Moderator

          *******

          Рейтинг (т): 878

          А что, такой вариант не подходит уже:

          ExpandedWrap disabled

            while X > 0 do begin

              inc(count, byte((X and $0001) > 0));

              X := X shr 1;

            end;

          ?
          В памяти-то число всегда хранится в двоичном виде…

          Snow-ball, кстати, название темы поменяй, ибо

          Цитата Правила Раздела @ 19.01.06, 18:46

          Название темы должно быть информативным !


          Profi



          Сообщ.
          #4

          ,
          19.01.06, 19:17

            Я вот так накидал на Pascal’е:

            ExpandedWrap disabled

              Procedure DecTo2(Value:integer;var Result:String);

              var

                o,v:integer;

              begin

                v:=value;

                o:=v mod 2;

                if o=0 then

                  insert(‘0’,result,0);

                if o=1 then

                  insert(‘1’,result,0);

                v:=v div 2;

                if v>=2 then

                  DecTo2(V,Result)

                else

                  insert(‘1’,result,0);

              end;

            — переводит десятичное число в двоичное в виде строки.

            Сообщение отредактировано: Profi — 19.01.06, 19:19


            nvm



            Сообщ.
            #5

            ,
            19.01.06, 20:49

              Senior Member

              ****

              Рейтинг (т): 31

              Цитата Profi @ 19.01.06, 19:17

              … — переводит десятичное число в двоичное в виде строки.

              Нет. Переводит двоичное число из внутреннего представления в строку.


              Profi



              Сообщ.
              #6

              ,
              19.01.06, 21:34

                Цитата nvm @ 19.01.06, 20:49

                Нет. Переводит двоичное число из внутреннего представления в строку.

                Я вообще-то делал как на парах по дискретной математике. Там мы точно переводили десятичные в двоичные.


                Snow-ball



                Сообщ.
                #7

                ,
                21.01.06, 18:18

                  Profi, Спасибо!

                  Добавлено 21.01.06, 18:21

                  ExpandedWrap disabled

                    while X > 0 do begin

                      inc(count, byte((X and $0001) > 0));

                      X := X shr 1;

                    end;

                  что за действие shr?

                  Guru

                  volvo877



                  Сообщ.
                  #8

                  ,
                  21.01.06, 18:35

                    Moderator

                    *******

                    Рейтинг (т): 878

                    Цитата Snow-ball @ 21.01.06, 18:18

                    что за действие shr?

                    Сдвиг вправо на определенное количество бит…

                    Пример:
                    До сдвига:
                    X = 10011101

                    Делаем сдвиг: X := X shr 2;

                    После сдвига:
                    X = 00100111 (младшие биты 01 вышли за пределы разрядной сетки, 2 старших бита заполнились нулями)


                    nvm



                    Сообщ.
                    #9

                    ,
                    21.01.06, 19:48

                      Senior Member

                      ****

                      Рейтинг (т): 31

                      Цитата Profi @ 19.01.06, 21:34

                      Цитата nvm @ 19.01.06, 20:49

                      Нет. Переводит двоичное число из внутреннего представления в строку.

                      Я вообще-то делал как на парах по дискретной математике. Там мы точно переводили десятичные в двоичные.

                      Ты производишь вычисления в десятичной системе, а компьютер в двоичной — десятичные числа он может хранить только в виде строк.


                      Pavia



                      Сообщ.
                      #10

                      ,
                      21.01.06, 20:01

                        ExpandedWrap disabled

                          while x<>0 do

                           begin

                           x:=x and(x-1);

                           inc(result);

                           end;


                        Profi



                        Сообщ.
                        #11

                        ,
                        21.01.06, 20:54

                          Цитата nvm @ 21.01.06, 19:48

                          Ты производишь вычисления в десятичной системе, а компьютер в двоичной — десятичные числа он может хранить только в виде строк.

                          А, Вы в этом смысле, просто не понял сначала.

                          Сообщение отредактировано: Profi — 21.01.06, 20:54

                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                          0 пользователей:

                          • Предыдущая тема
                          • Pascal
                          • Следующая тема

                          Рейтинг@Mail.ru

                          [ Script execution time: 0,0692 ]   [ 15 queries used ]   [ Generated: 30.05.23, 03:36 GMT ]  

                          Понравилась статья? Поделить с друзьями:
                        • Как составить программу по дошкольному воспитанию
                        • Как исправить воротник рубашки
                        • Oriel как найти каналы
                        • Как найти свой айфон без приложения
                        • Как в айфон найти сири в айфоне