Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2011, 13:01   #1
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
Смущение Функция, которая возвращает количество нулевых бит в символах строки.

Доброе время суток, ув. программисты!
Помогите в решении данной проблемы :
Цитата:
Решить как минимум двумя способами (простым и быстрым) следующую задачу: написать
функцию, которая возвращает количество нулевых бит в символах строки (не считая
нулевой символ в конце строки).
Поясните плиз что значит "количество нулевых бит в символах строки" и что значит "простым и быстрым способом".

Тема горит. Если можно ответьте как можно быстрее.
MeTeOpA вне форума Ответить с цитированием
Старый 25.02.2011, 13:19   #2
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Поясняю. Нулевым символом ('\0') заканчивается любая нуль-терминированная строка. Они могут идти и в мусоре после окончания строки.

То есть слово «Hello!» в char[10] будет представлено так:
1) H
2) e
3) l
4) l
5) o
6) !
7) \0
8) мусор
9) мусор
10) мусор

Так вот от вас требуют найти количество вхождений в 1-6. Представляете символы двоичным способом и считаете количество нулей в них.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 25.02.2011, 16:38   #3
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Obey-Kun, мне кажется тут имелось в виду количество нулевых бит, а не байт)
т.е. видимо в каждом символе считать количество нулевых бит и потом складывать
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 25.02.2011, 17:05   #4
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Я это и сказал:
Цитата:
Представляете символы двоичным способом и считаете количество нулей в них.
А про нуль-символ упомянул на случай, если ТС не знает, что это.
И про байт у меня ни слова. И char не обязательно занимает 1 байт, если чё.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 25.02.2011, 22:31   #5
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Цитата:
Сообщение от Obey-Kun Посмотреть сообщение
Поясняю. Нулевым символом ('\0') заканчивается любая нуль-терминированная строка. Они могут идти и в мусоре после окончания строки.

То есть слово «Hello!» в char[10] будет представлено так:
1) H
2) e
3) l
4) l
5) o
6) !
7) \0
8) мусор
9) мусор
10) мусор

Так вот от вас требуют найти количество вхождений в 1-6. Представляете символы двоичным способом и считаете количество нулей в них.
Так... Всё равно не понял=))

*"найти количество вхождений в 1-6"
Вхождения чего во что?)))

И как представить символы двоичным способом?

(ЗЫ: Ща конечно попробую гугл в руки и вперед, но если увидите сообщение - отпишите пожалуйста.)
MeTeOpA вне форума Ответить с цитированием
Старый 26.02.2011, 00:12   #6
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Держите:
Код:
#include <iostream>
#include <windows.h>

using namespace std;
int count_0 = 0;

int char_as_binary(char ch)
{
    int i = 8;
    while (i > 0)
    {
        --i;
        /*if (ch&(1 << i))
        {
            std::cout << '1';
        }*/

        if (!(ch&(1 << i)))
        {
            //std::cout << '0';
            count_0++;
        }
    }

    return 0;
}

int main()
{
    int len;
    char chars[128];
    strcpy(chars, "hell");
    len = strlen(chars);
    for (int i = 0; i < len; i++)
    {
        char_as_binary(chars[i]);
    }

    cout << count_0;
    return 0;
}
Надеюсь сами переделаете чтобы было в виде функции

Последний раз редактировалось zotox; 26.02.2011 в 00:25.
zotox вне форума Ответить с цитированием
Старый 26.02.2011, 03:11   #7
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Цитата:
Сообщение от MeTeOpA Посмотреть сообщение
Доброе время суток, ув. программисты!
Помогите в решении данной проблемы :


Поясните плиз что значит "количество нулевых бит в символах строки" и что значит "простым и быстрым способом".

Тема горит. Если можно ответьте как можно быстрее.
как вариант решение написали сверху. имеется ввиду вот что
например есть строка "hell"
символ h по ASCII - 104 то есть в двоичной 01101000. тут 5 нулей.
и так с каждой буквой.
"простой и быстрый способ" вероятно имеются ввиду сдвиги и битовые операции
onewho вне форума Ответить с цитированием
Старый 26.02.2011, 06:31   #8
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
*"найти количество вхождений в 1-6"
Вхождения чего во что?)))
Вхождений 0 в двоичном представлении этих символов.
Вхождение — это термин, используемый при поиске. В 01001 вхождений нуля 3.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция которая возвращает динамический массив gagarin0 Помощь студентам 5 19.01.2011 13:48
Найти количество положительных, отрицательных и нулевых чисел!! Александр Маслов Помощь студентам 2 21.12.2010 00:32
Найти номер первой по порядку строки, которая содержит наибольшее количество цифр spr1te Помощь студентам 1 17.12.2010 19:58
функция gcd, которая возвращает наибольший общий делитель двух целых чисел Jereme Общие вопросы C/C++ 2 21.01.2010 01:49
Количество нулевых элементов blackslayer Общие вопросы C/C++ 4 17.10.2009 16:35