Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 9
1

Программа вычисляющая номер позиции первого символа 0

15.09.2013, 15:47. Показов 2315. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток
Требуется написать такую программу:
Используя тип unsigned long int, выполнить с двоичным представлением числового значения указанное действие:
Вычислить номер позиции первого символа 0 среди значащих разрядов числового значения при использовании нумерации слева (справа)

Если не трудно, с комментариями. Буду очень благодарен

Чуть не забыл - желательно написать программу, не используя циклов

Добавлено через 56 минут
Проще говоря, вводится двоичное число х, а программа ищет номер позиции первого значащего нуля в ней
И это надо сделать без использования циклов

Надеюсь, что к вечеру кто-нибудь сможет помочь
Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2013, 15:47
Ответы с готовыми решениями:

Нужно вычислить номер позиции первого значащего символа
Задача такая. Нужно вычислить номер позиции первого значащего символа. Используя Signed Char....

Номер позиции первого вхождения символа в строку
Функция - STRRCHR(C: STRING; CH: CHAR): INTEGER - возвращает номер позиции первого вхождения...

Найти номер позиции символа 'f' в строке S
'ASCII (American Standard Code far Information Interchange)' Найти номер позиции символа 'f' в...

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

25
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
15.09.2013, 18:37 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от rycena Посмотреть сообщение
Да еще и надо как-то потом переписать это без использования циклов
там нет циклов, там рекурсия
функция вызывает сама себя
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
15.09.2013, 18:45 22
Цитата Сообщение от rycena Посмотреть сообщение
Да еще и надо как-то потом переписать это без использования циклов
- открой мне глаза: укажи хоть один цикл в моем коде!
0
OhMyGodSoLong
15.09.2013, 18:46
  #23

Не по теме:

Цитата Сообщение от rycena Посмотреть сообщение
Используя тип unsigned long int
Вычислить номер позиции первого 0
не используя циклов
C
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#if defined(__GNUC__)
#  define clzl(_x_, _a_) do { *(_a_) = __builtin_clzl(_x_); } while (0)
#  define ctzl(_x_, _a_) do { *(_a_) = __builtin_ctzl(_x_); } while (0)
#elif defined(_MSC_VER)
#  define clzl(_x_, _a_) do { _BitScanReverse((_x_), (_a_)); } while (0)
#  define ctzl(_x_, _a_) do { _BitScanForward((_x_), (_a_)); } while (0)
#else
 
static const char only32bit[1 - 2 * (sizeof(unsigned long) != 4)];
 
unsigned long popcnt(unsigned long num)
{
    num -= ((num >> 1) & 0x55555555);
    num = (((num >> 2) & 0x33333333) +
            (num       & 0x33333333));
    num = (((num >> 4) + num) & 0x0f0f0f0f);
    num += (num >> 8);
    num += (num >> 16);
    return num & 0x0000003f;
}
 
void clzl(unsigned long num, unsigned long *ret)
{
    num |= (num >> 1);
    num |= (num >> 2);
    num |= (num >> 4);
    num |= (num >> 8);
    num |= (num >> 16);
    *ret = 32 - popcnt(num);
}
 
void ctzl(unsigned long num, unsigned long *ret)
{
    *ret = popcnt((num & -num) - 1);
}
#endif
 
unsigned long first_zero(unsigned long num)
{
    unsigned long val;
    clzl(~num, &val);
    return val;
}
 
unsigned long last_zero(unsigned long num)
{
    unsigned long val;
    ctzl(~num, &val);
    return val;
}

1
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 9
15.09.2013, 18:51  [ТС] 24
ValeryS, спасибо, буду знать

OhMyGodSoLong, спасибо, этот способ тоже попробую, может и пойму что
Вообще, если честно, я думал код такой программы будет более простым. Учитывая, что одно занятие по Си прошло
Либо это действительно слишком после одной пары без лекции, либо я тугодом и мне надо было в гуманитарии идти
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
15.09.2013, 18:52 25
C++
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
27
#include <iostream.h>
 
int Sz(int n, int p=1) // функция определяет число двоичных разрядов
{                           // числа n. p - накопительный параметр
    if (n <= 1) return p;  // если число меньше или равно 1, то возвратим p
    return Sz((n / 2),(p+1)); // иначе рекурсивный вызов с увеличением на 1 параметра p
}                                    // для числа. деленного на 2 
 
int Lz(int n, int z, int w) // функция возвращает номер последнего нуля
{                               // двоичного представления числа n (считая справа)
    if (n == 0) return w;
    if ((n % 2) == 0) w=z;
    return Lz(n/2,z+1,w);
}
 
int main(int argc, char* argv[])
{
    int n,r;
    cout << "Enter number ";
    cin >> n;
    r=Lz(n,0,-1);
    if (r < 0)
        cout << "There is no zero in binary representation!" << endl;
    else
        cout << Sz(n)-r << endl;
    return 0;
}
1
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
15.09.2013, 18:54 26
Цитата Сообщение от rycena Посмотреть сообщение
либо я тугодом и мне надо было в гуманитарии идти

Не по теме:

Первый курс, еще не поздно.

0
15.09.2013, 18:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2013, 18:54
Помогаю со студенческими работами здесь

Найти номер позиции заданного символа в строке
нужна помощь и напишите коменты к каждой строке плиз Написать метод, входными параметрами...

Вернуть номер позиции заданного символа в строке
Написать метод, входными параметрами которого являются строка, символ. Метод должен вернуть номер...

Программа, вычисляющая сумму элементов массива, расположенных после первого элемента.
Добрый день! Помогите пожалуйста написать программу, которая вычисляет сумму элементов...

Поиск позиции первого вхождения в первую строку какого-либо символа из второй строки
Написать метод, входными параметрами которого являются две строки. Метод должен возвращать позицию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru