Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289
1

Поменять 2 переменные.

02.02.2010, 18:10. Показов 1325. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Поменять 2 переменные. Без использования 3.
Можно использовать код асма.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2010, 18:10
Ответы с готовыми решениями:

Поменять местами переменные
Здравствуйте! При решении задач, возник вопрос в правильности решения (код работает корректно, но...

Поменять местами значения целых переменных x и y, используя дополнительные переменные
Поменять местами значения целых переменных x и y ,используя дополнительные переменные . Вывести...

Поменять местами значения целых переменных А и В, не используя дополнительные переменные
Задача 9. Поменять местами значения целых пере¬менных А и В, не используя дополнительные...

Поменять местами переменные так, чтобы они оказались упорядоченными по убыванию
Всем доброго времени суток. Нужна помощь с заданиями. Сам не могу сделать, потому что нет...

19
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
02.02.2010, 18:23 2
BOR1K, подсказка - манипуляции с арфимтическими операциями)
0
17 / 29 / 3
Регистрация: 05.09.2009
Сообщений: 512
02.02.2010, 18:23 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <windows.h>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     {
                              char variable1[80], variable2[80];
                              std::cout << "Введите первую переменную: ";
                              cin.getline (variable1, 80);
                              std::cout << "Введите вторую переменную: ";
                              cin.getline (variable2, 80);
                              std::cout << "\n";
                              std::cout << "Значение первой переменной " << variable2 << std::endl;
                              std::cout << "Значение второй переменной " << variable1 << std::endl;
                              }
                              system("PAUSE");
                              return EXIT_SUCCESS;
                              
}
0
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
02.02.2010, 18:25 4
Rustam, круто..
1
14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289
02.02.2010, 18:26  [ТС] 5
Цитата Сообщение от Rustam Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <windows.h>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     {
                              char variable1[80], variable2[80];
                              std::cout << "Введите первую переменную: ";
                              cin.getline (variable1, 80);
                              std::cout << "Введите вторую переменную: ";
                              cin.getline (variable2, 80);
                              std::cout << "\n";
                              std::cout << "Значение первой переменной " << variable2 << std::endl;
                              std::cout << "Значение второй переменной " << variable1 << std::endl;
                              }
                              system("PAUSE");
                              return EXIT_SUCCESS;
                              
}

0
17 / 29 / 3
Регистрация: 05.09.2009
Сообщений: 512
02.02.2010, 18:31 6
0
14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289
02.02.2010, 18:33  [ТС] 7
Блин, ребята выручайте
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
02.02.2010, 18:39 8
std::swap(var1, var2);
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
02.02.2010, 18:43 9
C
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
        int a, b;
        a=2;
        b=3;
        b*=a;
        a=b/a;
        b/=a;
        printf("a=%d\n", a);
        printf("b=%d\n", b);
        return 0;
}
0
9 / 9 / 1
Регистрация: 07.06.2009
Сообщений: 34
02.02.2010, 18:54 10
Цитата Сообщение от BOR1K Посмотреть сообщение
Поменять 2 переменные. Без использования 3.
Можно использовать код асма.

a=a||b;
b=a||b;
a=a||b;

и будет счастье


или

a=a-b;
b=a+b;
a=b-a;
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
02.02.2010, 19:01 11
BOR1K, самый простой вариант
C++
1
a ^= b ^= a ^= b;
или более правильная эта же запись, которая в отличие от первой также работает в C# и Java
C++
1
2
3
a ^= b;
b ^= a;
a ^= b;
1
9 / 9 / 1
Регистрация: 07.06.2009
Сообщений: 34
02.02.2010, 19:19 12
Цитата Сообщение от M128K145 Посмотреть сообщение
BOR1K, самый простой вариант
C++
1
a ^= b ^= a ^= b;
или более правильная эта же запись, которая в отличие от первой также работает в C# и Java
C++
1
2
3
a ^= b;
b ^= a;
a ^= b;
Во, именно, я это и имел ввиду, просто не то поставил...не || , а ^ или xor на паскале)
0
14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289
02.02.2010, 19:44  [ТС] 13
А что значит этот оператор
^=
?
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
02.02.2010, 20:42 14
Алгоритм обмена при помощи исключающего ИЛИ
0
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
02.02.2010, 20:48 15
Цитата Сообщение от BOR1K Посмотреть сообщение
А что значит этот оператор ?
По всей видимости то же что и другие подобные операторы.
C++
1
a x= b;
аналогично
C++
1
a = a x b;
Где x - какой либо оператой. будь то \ * + - ^ или другой
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 24
10.10.2012, 20:16 16
Вот наиболее оптимальный вариант
a := a - b;
b := a + b;
a := b - a;
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.10.2012, 17:56 17
Gregory15, это почему же арифметические операции оптимальнее побитовых?
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 24
12.10.2012, 00:36 18
Цитата Сообщение от silent_1991 Посмотреть сообщение
Gregory15, это почему же арифметические операции оптимальнее побитовых?
Потому что не все знакомы с битовыми операциями!
А так это самый оптимальный вариант так как она работает быстрее!
0
Заблокирован
12.10.2012, 03:41 19
silent_1991, может и не оптимальнее, но для нонешнего компиля уже разницы нет. т.е. оптимизация с помощью битовых операций вместо арифметических (как писали бородатые олдфаги) сегодня не актуальна. Инструментарий умный, железо развито. Ну вот наглядный пример.
Bash
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
~/samples$ cat foo.c 
#include <stdio.h>
 
int main () {
    
    volatile int x = 10, y = 5;
    int i, j, k;
 
    for (i = 0; i < 10000; ++i)
        for (j = 0; j < 1000; ++j)
            for (k = 0; k < 1000; ++k) {
                x ^= y;
                y ^= x;
                x ^= y;
            }
 
    return 0;
}
~/samples$ clang -O2 foo.c 
~/samples$ time ./a.out 
 
real    0m56.307s
user    0m56.212s
sys 0m0.000s
~/samples$ cat foo.c 
#include <stdio.h>
 
int main () {
    
    volatile int x = 10, y = 5;
    int i, j, k;
 
    for (i = 0; i < 10000; ++i)
        for (j = 0; j < 1000; ++j)
            for (k = 0; k < 1000; ++k) {
                x += y;
                y = x - y;
                x -= y;
            }
 
    return 0;
}
~/samples$ clang -O2 foo.c 
~/samples$ time ./a.out 
 
real    0m55.967s
user    0m55.871s
sys 0m0.000s
~/samples$
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.10.2012, 12:42 20
Цитата Сообщение от Gregory15 Посмотреть сообщение
А так это самый оптимальный вариант так как она работает быстрее!
Да ну?

alkagolik, да это-то понятно, меня интересовал конкретный ответ на конкретный вопрос: почему (в отрыве от оптимизаций) арифметические операции быстрее побитовых.

Добавлено через 32 секунды
Да в общем-то ладно, это уже оффтоп.
0
12.10.2012, 12:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2012, 12:42
Помогаю со студенческими работами здесь

Строковые переменные. как найти короткое слово и поменять его с первым словом?
Дана строка символов. Найти самое короткое слово,начинающиеся с буквы &quot;а&quot;, и поменять его с первым...

Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной
Мой код. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include&lt;iomanip&gt; using namespace std; ...

Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения
Создать массив структур, каждая из которых состоит из следующих елементов: факультет, курс, группа,...

Переменные,значение функции,вспомогательные переменные.
1)Даны переменные A,B,C.Изменить их значения,переместив их содержимое из A-в B,B-в C,C-в A,и...


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

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