Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
WoodHobit
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
#1

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

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

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

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

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

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

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

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

21
WilFred
31 / 26 / 17
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 17:27 #2
WoodHobit, у меня вопрос: переменная m была объявлена глобально? Если нет то работать не будет...
0
Super GT
4 / 4 / 1
Регистрация: 23.12.2012
Сообщений: 131
03.10.2013, 17:28 #3
Цитата Сообщение от WoodHobit Посмотреть сообщение
int sum=0
Они тут точку с запятой забыли поставить? Компилятор вывалится с сообщением об ошибке, не? ИМХО
0
WoodHobit
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
WoodHobit
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 17:31  [ТС] #6
Цитата Сообщение от Super GT Посмотреть сообщение
Они тут точку с запятой забыли поставить? Компилятор вывалится с сообщением об ошибке, не? ИМХО
Не они а я забыл поставить, это задание вообще письменное было)))
0
WilFred
31 / 26 / 17
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 17:31 #7
Super GT, кстати да, не заметил) В общем тупо кусок неработающего кода)
0
Algoritmer
155 / 95 / 24
Регистрация: 07.03.2013
Сообщений: 490
Записей в блоге: 1
03.10.2013, 17:35 #8
Цитата Сообщение от WilFred Посмотреть сообщение
WoodHobit, у меня вопрос: переменная m была объявлена глобально? Если нет то работать не будет...
Вот именно. Ответ одним предложением: данная функция ничего не делает поскольку она не компилируется.
0
MrGluck
Модератор
Эксперт CЭксперт С++
8078 / 4930 / 1431
Регистрация: 29.11.2010
Сообщений: 13,357
03.10.2013, 17:37 #9
Цитата Сообщение от WoodHobit Посмотреть сообщение
собиседования
Цитата Сообщение от WoodHobit Посмотреть сообщение
было такое задание где было такое задание
Цитата Сообщение от WoodHobit Посмотреть сообщение
не правильный

Нет объявления переменной m, эта функций просто не компилируется
0
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;
    }
так правильней
0
WilFred
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
WoodHobit
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 17:45  [ТС] #12
Цитата Сообщение от WilFred Посмотреть сообщение
а ведь не объявлена)
вместо a должно быть m, моя опечатка
0
Firework
98 / 90 / 35
Регистрация: 01.04.2013
Сообщений: 624
03.10.2013, 17:53 #13
эта функция показывает разницу
MAX_INT - m.
0
MrGluck
Модератор
Эксперт CЭксперт С++
8078 / 4930 / 1431
Регистрация: 29.11.2010
Сообщений: 13,357
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
maxgri2000
10 / 10 / 0
Регистрация: 01.10.2013
Сообщений: 25
03.10.2013, 18:25 #15
Надо было сразу не задумываясь ответить "Не знаю", и сейчас бы Вы уже работали кассиром-оператором этой АЗС. А некоторое время, потраченное на раздумье выдает в претенденте опасную склонность к логическому мышлению.

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

Описать одним предложением что делает данная функция
C++
1
                    m = (m+1) | m;
что вот это за штука расскажите пожалуйста-никогда не встречал
0
MrGluck
Модератор
Эксперт CЭксперт С++
8078 / 4930 / 1431
Регистрация: 29.11.2010
Сообщений: 13,357
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
rrrFer
Заблокирован
03.10.2013, 19:03 #18
Да нормальное задание. Функция считает количество нулей в двоичной записи числа, вроде бы.
Ну и этот трюк приколен, да: m = (m+1) | m;
----------
задание отсеивает ущербных, мне кажется )
2
novi4ok
551 / 504 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.10.2013, 19:08 #19
хорошо, а теперь где и как объявлена переманная а?
ооооооооопс! здесь, оказывается, уже вторая страница, а я в начале ковыряюсь
0
Croessmah
++Ͻ
14503 / 8285 / 1556
Регистрация: 27.09.2012
Сообщений: 20,336
Записей в блоге: 3
Завершенные тесты: 1
03.10.2013, 19:09 #20
Цитата Сообщение от novi4ok Посмотреть сообщение
хорошо, а теперь где и как объявлена переманная а?
вот тут и вот так:
Цитата Сообщение от WoodHobit Посмотреть сообщение
int FuncName (int a)
0
03.10.2013, 19:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 19:09

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

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

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


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

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

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