0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
1

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

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

Author24 — интернет-сервис помощи студентам
День добрый!
Был сегодня на собеседовании, и было такое задание где было такое задание:

Описать одним предложением что делает данная функция
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;
    }
Ответил что это бесконечный цикл и данная функция просто вешает программу, мне сказали что ответ не правильный.

Ну вот мне теперь и интересно что ж такого делает данная функция???
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2013, 17:24
Ответы с готовыми решениями:

ООП. Тестовое задание собеседования.
Это тестовое задание для устройста на работу. Я не совсем понимаю что от меня хотят. Не могли бы вы...

Задание на вложенные циклы!
1. С помощью вложенных циклов вывести на экран указанное на картинке. Пожалуйста, напишите код...

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

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

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

Не по теме:

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

0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 17:31  [ТС] 6
Цитата Сообщение от Super GT Посмотреть сообщение
Они тут точку с запятой забыли поставить? Компилятор вывалится с сообщением об ошибке, не? ИМХО
Не они а я забыл поставить, это задание вообще письменное было)))
0
31 / 26 / 17
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 17:31 7
Super GT, кстати да, не заметил) В общем тупо кусок неработающего кода)
0
159 / 98 / 25
Регистрация: 07.03.2013
Сообщений: 513
Записей в блоге: 1
03.10.2013, 17:35 8
Цитата Сообщение от WilFred Посмотреть сообщение
WoodHobit, у меня вопрос: переменная m была объявлена глобально? Если нет то работать не будет...
Вот именно. Ответ одним предложением: данная функция ничего не делает поскольку она не компилируется.
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
03.10.2013, 17:37 9
Цитата Сообщение от WoodHobit Посмотреть сообщение
собиседования
Цитата Сообщение от WoodHobit Посмотреть сообщение
было такое задание где было такое задание
Цитата Сообщение от WoodHobit Посмотреть сообщение
не правильный

Нет объявления переменной m, эта функций просто не компилируется
0
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;
    }
так правильней
0
31 / 26 / 17
Регистрация: 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;
* * }
а ведь не объявлена)
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 17:45  [ТС] 12
Цитата Сообщение от WilFred Посмотреть сообщение
а ведь не объявлена)
вместо a должно быть m, моя опечатка
0
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
03.10.2013, 17:53 13
эта функция показывает разницу
MAX_INT - m.
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
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).
0
10 / 10 / 0
Регистрация: 01.10.2013
Сообщений: 23
03.10.2013, 18:25 15
Надо было сразу не задумываясь ответить "Не знаю", и сейчас бы Вы уже работали кассиром-оператором этой АЗС. А некоторое время, потраченное на раздумье выдает в претенденте опасную склонность к логическому мышлению.

Добавлено через 3 минуты
Может быть функция косвенно оценивает разрядность ЭВМ, на которой ее запускают? или разрядность типа int?
0
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
03.10.2013, 18:36 16
Цитата Сообщение от WoodHobit Посмотреть сообщение
День добрый!
Был сегодня на собеседовании, и было такое задание где было такое задание:

Описать одним предложением что делает данная функция
C++
1
                    m = (m+1) | m;
что вот это за штука расскажите пожалуйста-никогда не встречал
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
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 секунды
Поразрядное сравнение двух чисел на предмет истинности. Если хотя бы в одном истинно - результат истина. Сравнение происходит в двоичной с.с. что значит, что числа сначала преобразуются в эту с.с., а затем, после выполнения операции, назад.
2
Заблокирован
03.10.2013, 19:03 18
Да нормальное задание. Функция считает количество нулей в двоичной записи числа, вроде бы.
Ну и этот трюк приколен, да: m = (m+1) | m;
----------
задание отсеивает ущербных, мне кажется )
2
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.10.2013, 19:08 19
хорошо, а теперь где и как объявлена переманная а?
ооооооооопс! здесь, оказывается, уже вторая страница, а я в начале ковыряюсь
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
03.10.2013, 19:09 20
Цитата Сообщение от novi4ok Посмотреть сообщение
хорошо, а теперь где и как объявлена переманная а?
вот тут и вот так:
Цитата Сообщение от WoodHobit Посмотреть сообщение
int FuncName (int a)
0
03.10.2013, 19:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2013, 19:09
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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