Форум программистов, компьютерный форум CyberForum.ru

Задание с собеседования (циклы) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
WoodHobit
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 17:24     Задание с собеседования (циклы) #1
День добрый!
Был сегодня на собеседовании, и было такое задание где было такое задание:

Описать одним предложением что делает данная функция
C++
1
2
3
4
5
6
7
8
9
10
    int FuncName (int a)
    {
        int sum=0
            while ( a != unsigned(-1))
            {
                m = (m+1) | m;
                sum++;
            }
            return sum;
    }
Ответил что это бесконечный цикл и данная функция просто вешает программу, мне сказали что ответ не правильный.

Ну вот мне теперь и интересно что ж такого делает данная функция???
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 17:24     Задание с собеседования (циклы)
Посмотрите здесь:

Циклы C++
Задание на массив и задание на матрицу. C++
Задача с собеседования (аллокатор памяти) C++
ООП. Тестовое задание собеседования. C++
C++ циклы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
WilFred
 Аватар для WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 17:27     Задание с собеседования (циклы) #2
WoodHobit, у меня вопрос: переменная m была объявлена глобально? Если нет то работать не будет...
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
03.10.2013, 17:28     Задание с собеседования (циклы) #3
Цитата Сообщение от WoodHobit Посмотреть сообщение
int sum=0
Они тут точку с запятой забыли поставить? Компилятор вывалится с сообщением об ошибке, не? ИМХО
WoodHobit
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 17:29  [ТС]     Задание с собеседования (циклы) #4
Цитата Сообщение от WilFred Посмотреть сообщение
WoodHobit, у меня вопрос: переменная m была объявлена глобально? Если нет то работать не будет...
По логи вроде бы да, но там кто его знает. Просто был данный кусок кода и все
Firework
03.10.2013, 17:29
  #5

Не по теме:

отсеивает криворуких несмышлённых программистов

WoodHobit
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 17:31  [ТС]     Задание с собеседования (циклы) #6
Цитата Сообщение от Super GT Посмотреть сообщение
Они тут точку с запятой забыли поставить? Компилятор вывалится с сообщением об ошибке, не? ИМХО
Не они а я забыл поставить, это задание вообще письменное было)))
WilFred
 Аватар для WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 17:31     Задание с собеседования (циклы) #7
Super GT, кстати да, не заметил) В общем тупо кусок неработающего кода)
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
03.10.2013, 17:35     Задание с собеседования (циклы) #8
Цитата Сообщение от WilFred Посмотреть сообщение
WoodHobit, у меня вопрос: переменная m была объявлена глобально? Если нет то работать не будет...
Вот именно. Ответ одним предложением: данная функция ничего не делает поскольку она не компилируется.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
03.10.2013, 17:37     Задание с собеседования (циклы) #9
Цитата Сообщение от WoodHobit Посмотреть сообщение
собиседования
Цитата Сообщение от WoodHobit Посмотреть сообщение
было такое задание где было такое задание
Цитата Сообщение от WoodHobit Посмотреть сообщение
не правильный

Нет объявления переменной m, эта функций просто не компилируется
WoodHobit
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 17:40  [ТС]     Задание с собеседования (циклы) #10
Цитата Сообщение от MrGluck Посмотреть сообщение

Нет объявления переменной m, эта функций просто не компилируется
прошу прощения, не правильно функцию описал
C++
1
2
3
4
5
6
7
8
9
10
    int FuncName (int m)
    {
        int sum=0;
            while ( a != unsigned(-1))
            {
                m = (m+1) | m;
                sum++;
            }
            return sum;
    }
так правильней
WilFred
 Аватар для WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 17:43     Задание с собеседования (циклы) #11
Цитата Сообщение от WoodHobit Посмотреть сообщение
int FuncName (int m)
* * {
* * * * int sum=0;
* * * * * * while ( a != unsigned(-1))
* * * * * * {
* * * * * * * * m = (m+1) | m;
* * * * * * * * sum++;
* * * * * * }
* * * * * * return sum;
* * }
а ведь не объявлена)
WoodHobit
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 17:45  [ТС]     Задание с собеседования (циклы) #12
Цитата Сообщение от WilFred Посмотреть сообщение
а ведь не объявлена)
вместо a должно быть m, моя опечатка
Firework
57 / 81 / 21
Регистрация: 01.04.2013
Сообщений: 567
03.10.2013, 17:53     Задание с собеседования (циклы) #13
эта функция показывает разницу
MAX_INT - m.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
03.10.2013, 18:09     Задание с собеседования (циклы) #14
Я так понял, ТС хочет сказать про функцию
C++
1
2
3
4
5
6
7
8
9
10
int FuncName (int m)
{
    int sum=0;
    while ( m != unsigned(-1))
    {
        m = (m+1) | m;
        sum++;
    }
    return sum;
}
Там подсчитывается и возвращается число итераций вида m = m+1 | m до тех пор, пока m не переполнит максимальное значение типа int.

Добавлено через 14 минут
Цитата Сообщение от MrGluck Посмотреть сообщение
Там подсчитывается и возвращается число итераций вида m = m+1 | m до тех пор, пока m не переполнит максимальное значение типа int.
Это лишь в случае с положительным числом типа int.
Сначала приравнивается к наименьшему числу типа 2*n+1, которое превосходит наше m, далее идет обычное приращение типа m = 2*m+1
То есть сначала заполняет все 0 в представлении числа в двоичной форме если необходимо, а далее дорисовывает к этому представлению 1 (это и есть m = 2*m+1).
maxgri2000
10 / 10 / 1
Регистрация: 01.10.2013
Сообщений: 25
03.10.2013, 18:25     Задание с собеседования (циклы) #15
Надо было сразу не задумываясь ответить "Не знаю", и сейчас бы Вы уже работали кассиром-оператором этой АЗС. А некоторое время, потраченное на раздумье выдает в претенденте опасную склонность к логическому мышлению.

Добавлено через 3 минуты
Может быть функция косвенно оценивает разрядность ЭВМ, на которой ее запускают? или разрядность типа int?
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
03.10.2013, 18:36     Задание с собеседования (циклы) #16
Цитата Сообщение от WoodHobit Посмотреть сообщение
День добрый!
Был сегодня на собеседовании, и было такое задание где было такое задание:

Описать одним предложением что делает данная функция
C++
1
                    m = (m+1) | m;
что вот это за штука расскажите пожалуйста-никогда не встречал
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
03.10.2013, 18:48     Задание с собеседования (циклы) #17
newb_programmer, побитовая операция ИЛИ
получается так, например:
m = 0:
m = 1 | 0 = 1
m = 10 | 1 = 11 // 10 это 2 в двоичной системе счисления. Получается, сравниваются 10 и 01
m = 100 | 11 = 111 // в переводе на десятеричную 7

Добавлено через 54 секунды
Поразрядное сравнение двух чисел на предмет истинности. Если хотя бы в одном истинно - результат истина. Сравнение происходит в двоичной с.с. что значит, что числа сначала преобразуются в эту с.с., а затем, после выполнения операции, назад.
rrrFer
Заблокирован
03.10.2013, 19:03     Задание с собеседования (циклы) #18
Да нормальное задание. Функция считает количество нулей в двоичной записи числа, вроде бы.
Ну и этот трюк приколен, да: m = (m+1) | m;
----------
задание отсеивает ущербных, мне кажется )
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.10.2013, 19:08     Задание с собеседования (циклы) #19
хорошо, а теперь где и как объявлена переманная а?
ооооооооопс! здесь, оказывается, уже вторая страница, а я в начале ковыряюсь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 19:09     Задание с собеседования (циклы)
Еще ссылки по теме:

C++ Пример из собеседования по C++
Собеседования по С++ для джуна C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
03.10.2013, 19:09     Задание с собеседования (циклы) #20
Цитата Сообщение от novi4ok Посмотреть сообщение
хорошо, а теперь где и как объявлена переманная а?
вот тут и вот так:
Цитата Сообщение от WoodHobit Посмотреть сообщение
int FuncName (int a)
Yandex
Объявления
03.10.2013, 19:09     Задание с собеседования (циклы)
Ответ Создать тему
Опции темы

Текущее время: 02:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru