3 / 2 / 4
Регистрация: 05.12.2016
Сообщений: 95
1

Изменить программу так, чтобы выполнялось задание, но не использовался поразрядный оператор ^

08.06.2017, 18:54. Показов 1183. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include <iostream>
using namespace std;
int slog(int n, int m);
int main()
{
    setlocale(LC_ALL, "rus_rus.1251");
    int n, m;
    cout << "Введите первое целое число: ";
    cin >> n;
    cout << "Введите второе целое число: ";
    cin >> m;
    cout<<"Сумма чисел "<<n<<" и "<<m<<" = "<<slog(n,m)<<endl;
    return 0;
}
int slog(int n, int m)
{
    int k;
    while(m)
    {
        k=n^m;
        m=(n&m)<<1;
        n=k;
    }
    return n;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2017, 18:54
Ответы с готовыми решениями:

Переписать программу так, чтобы для вывода на экран каждого операнда использовался отдельный оператор
Читаю учебник C++, не могу разобраться с задачей, прошу помощи. Код: #include &lt;iostream&gt; int...

Переделать фрагмент кода так, чтобы использовался оператор goto
Ребяяяят!! Помогите переделать в goto данный фрагмент программы! Все плохо... for (int i = 0;...

Изменить программу, чтобы использовался множественный выбор switch
#include &lt;stdio.h&gt; int main(void) { int temp; system(&quot;cls&quot;); ...

Переделать программу так чтобы использовался цикл repet, а не for
Есть небольшая программка по подсчету суммы цифр от 1 до n (n=4, 1+2+3+4=10) Помогите пожалуйста...

13
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
08.06.2017, 19:30 2
shaverma, здравствуйте! Может быть, нужно просто заменить функцию slog() на эту:

C++
1
2
3
4
int slog(int n, int m)
{
   return n + m;
}
0
3 / 2 / 4
Регистрация: 05.12.2016
Сообщений: 95
08.06.2017, 19:46  [ТС] 3
Нет. По заданию программа не должна содержать стандартные арифметические операции, в том числе и сложения
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
08.06.2017, 19:49 4
Цитата Сообщение от shaverma Посмотреть сообщение
не должна содержать стандартные арифметические операции
а что должно быть?
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
08.06.2017, 19:55 5
shaverma, а оператор инкремента можно использовать?
0
3 / 2 / 4
Регистрация: 05.12.2016
Сообщений: 95
08.06.2017, 19:58  [ТС] 6
Использовать поразрядные операторы

Добавлено через 2 минуты
К сожалению, нельзя
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
08.06.2017, 20:05 7
shaverma, такой вариант подходит?

C++
1
2
3
4
5
6
7
int slog(int n, int m)
{
    int k;
    if (!(m)) return n;
    else k = slog(n, ~-m);
    return -~k;
}
0
3 / 2 / 4
Регистрация: 05.12.2016
Сообщений: 95
08.06.2017, 20:08  [ТС] 8
Да, я думаю подойдет, спасибо большое! Только там небольшая опечатка:
C++
1
2
3
4
5
6
7
int slog(int n, int m)
{
    int k;
    if (!(m)) return n;
    else k = slog(n, ~-m);
    return -~k;
}
Добавлено через 1 минуту
Хотя постойте, "-" тоже нельзя ведь
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
08.06.2017, 20:13 9
shaverma, у вас программа не вылетает, когда второе число отрицательное?

Добавлено через 1 минуту
shaverma, "-~" - это побитовый инкремент. Значит буду думать еще
0
3 / 2 / 4
Регистрация: 05.12.2016
Сообщений: 95
08.06.2017, 20:14  [ТС] 10
Да, вылетает(
0
353 / 134 / 28
Регистрация: 16.12.2012
Сообщений: 607
Записей в блоге: 1
08.06.2017, 20:22 11
Код
int a = 5, b = -3;
cout << (a+(~b+1)) << endl;
0
3 / 2 / 4
Регистрация: 05.12.2016
Сообщений: 95
08.06.2017, 20:41  [ТС] 12
Нельзя использовать "+"
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
08.06.2017, 21:00 13
Лучший ответ Сообщение было отмечено shaverma как решение

Решение

shaverma, вот что получилось:

C++
1
2
3
4
5
6
7
int slog(int n, int m)
{
   if (!n)
      return m;
   else
      return slog((n & m) << 1, (~n & m) | (n & ~m));
}
Добавлено через 1 минуту
shaverma, P.S.
C++
1
x ^ y == (~x & y) | (x & ~y)
1
3 / 2 / 4
Регистрация: 05.12.2016
Сообщений: 95
09.06.2017, 07:44  [ТС] 14
Спасибо большое! Все работает
0
09.06.2017, 07:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2017, 07:44
Помогаю со студенческими работами здесь

Переделать рекурсию так, чтобы был счетчик и использовался тип static
Есть рекурсия, было сказано ее переделать так, чтобы был счетчик и использовать тип static. Не...

Через точку провести прямую так, чтобы выполнялось условие
Через точку M(1,3) провести прямую так, чтобы она отсекла в первом квадрате прямоугольный...

Найти значение функций так, чтобы условие выполнялось от а до b с шагом h
Нужна срочная помощь! По задаче требуется найти значение функций так, чтобы условие выполнялось от...

Сделать так, чтобы массив из метода использовался в обоих методах сортировки и не изменял своего значения
подскажите пожалуйста, как сделать так, чтобы массив из метода Metod использовался в обоих методах...

Найти число M натуральных чисел ni, i = 1,…M и сумму так, чтобы выполнялось условие S <= N
Найти число M натуральных чисел ni, i = 1,…M и сумму S=Ʃ (вверху над суммой m, внизу i=1)ni^2 так,...

Как распределить 6 произвольных целых чисел на 2 группы так, чтобы выполнялось условие
Добрый вечер, подскажите, как распределить 6 произвольных целых чисел на 2 группы так, чтобы...


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

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

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