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

С++ для начинающих

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

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

03.10.2013, 17:24. Просмотров 1306. Ответов 21
Метки нет (Все метки)

День добрый!
Был сегодня на собеседовании, и было такое задание где было такое задание:

Описать одним предложением что делает данная функция
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++
1. С помощью вложенных циклов вывести на экран указанное на картинке. Пожалуйста, напишите код понятный для новичка. Заранее благодарю.

Задания с++ с собеседования - C++
Предложите ваши варианты решения заданий 1. Перечислите все проблемы, которые вы видите в данном коде: class Foo { public: ...

Пример из собеседования по C++ - C++
Граждане, есть такой пример: class B { private: virtual void f() { std::cout << "B::f()" << std::endl;} public: void g() {...

Собеседования по С++ для джуна - C++
Добрый день, если вы бы проводили собеседования по С++ для джуна - какой вопрос по С++ вы бы припасли как самый сложный? Для...

Задача с собеседования (аллокатор памяти) - C++
Вопрос звучит так: "Напишите быстрый аллокатор памяти" Как я его понимаю: можно пожертвовать растратой памяти, всякими наворотами,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 17:31 #7
Super GT, кстати да, не заметил) В общем тупо кусок неработающего кода)
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 480
Записей в блоге: 1
03.10.2013, 17:35 #8
Цитата Сообщение от WilFred Посмотреть сообщение
WoodHobit, у меня вопрос: переменная m была объявлена глобально? Если нет то работать не будет...
Вот именно. Ответ одним предложением: данная функция ничего не делает поскольку она не компилируется.
MrGluck
Модератор
Эксперт CЭксперт С++
7209 / 4375 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
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
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
63 / 87 / 23
Регистрация: 01.04.2013
Сообщений: 593
03.10.2013, 17:53 #13
эта функция показывает разницу
MAX_INT - m.
MrGluck
Модератор
Эксперт CЭксперт С++
7209 / 4375 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
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?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 18:25
Привет! Вот еще темы с ответами:

Трудоустройство: что нужно знать для успешного прохождения собеседования в самые крутые компании? - C++
Добрый вечер. Напишите пожалуйста список того, что нужно знать для успешного прохождения собеседования в самые крутые компании, c++...

Заменить в коде циклы for на циклы while - C++
int i, j, n; bool a; cin >> i >> n; for (i; i<n; i++) { a = true; for (j = 2; j <= i / 2; j++) if ((i%j) == 0) a =...

Задание на массив и задание на матрицу. - C++
1.Удалить из массива A(n) нулевые элементы, передвигая на их место следующие элементы, не нарушая порядка их следования. В результате...

Циклы (2 задание) - Python
Составить и отладить процедуру для приближённого вычисления заданной функции y=f(x) путём суммирования членов заданного её ряда s(x)....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.10.2013, 18:25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru