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

зачем нужно Временное значение? - C++

Восстановить пароль Регистрация
 
 
Kristinka!!
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 39
19.09.2013, 21:01     зачем нужно Временное значение? #1
C++
1
2
3
4
5
6
void swapper(int &x,int &y)   //Функция перемены мест. Если параметры будут без ссылок, то эффекта не будет
{
   int temp;   //Временное значение
   temp=x;   //Запоминаем текущий элемент x во временное значение temp
    x=y;       //В текущее значение x записываем следующее за ним 
    y=temp;   //Текущее значение было изменено, но оно запомнено в temp, берем его оттуда
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
19.09.2013, 21:06     зачем нужно Временное значение? #2
Цитата Сообщение от Kristinka!! Посмотреть сообщение
зачем нужно Временное значение?
C++
1
2
3
4
5
void swapper(int &x, int &y)
{
    x = y;
    y = x;
}
какой результат будет думаю понятно

после первого оператора присваивания Переменная x навсегда потеряется
Kristinka!!
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 39
19.09.2013, 21:11  [ТС]     зачем нужно Временное значение? #3
Цитата Сообщение от _ Посмотреть сообщение
C++
1
2
3
4
5
void swapper(int &x, int &y)
{
    x = y;
    y = x;
}
какой результат будет думаю понятно

после первого оператора присваивания Переменная x навсегда потеряется
то есть Временные значения необходимы что бы после первого значения появлялось 2?
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
19.09.2013, 21:14     зачем нужно Временное значение? #4
Цитата Сообщение от Kristinka!! Посмотреть сообщение
то есть Временные значения необходимы что бы после первого значения появлялось 2?
Ну смотри, допустим x=5,y=10

при присваивании x=y; значение 5 навсегда теряется.
То есть теперь х=10,y=10
и y=x уже ничего не изменит!
Поэтому мы значение 5 запоминаем в temp допустим!
И при y=temp все получится:
х=10,y=5
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
19.09.2013, 21:15     зачем нужно Временное значение? #5
Шкалата!!!
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
19.09.2013, 21:16     зачем нужно Временное значение? #6
Цитата Сообщение от ninja2 Посмотреть сообщение
Шкалата!!!
Гуру!!!
Kristinka!!
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 39
19.09.2013, 21:17  [ТС]     зачем нужно Временное значение? #7
Цитата Сообщение от ninja2 Посмотреть сообщение
Шкалата!!!
что поделить,только второй день изучаю
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
19.09.2013, 21:20     зачем нужно Временное значение? #8
ninja2, для тролинга нужно использовать другие ресурсы а не технической форум
Кликните здесь для просмотра всего текста

Не по теме:

ах да, всегда хотел сказать, ты сам себя ведешь как ,,шкалата,, ибо я на 60% уверен что ты ею являешься

ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
19.09.2013, 21:24     зачем нужно Временное значение? #9
Цитата Сообщение от Kristinka!! Посмотреть сообщение
что поделить,только второй день изучаю
Ну ничо второй день не первый, мб через годок второй что нить и выучишь, со временем разберешься не переживай. Но ты вообще нулевой я тебе честно скажу, просто не люблю врать, но правда нулевущий. (ужас )
Kristinka!!
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 39
19.09.2013, 21:27  [ТС]     зачем нужно Временное значение? #10
Цитата Сообщение от ninja2 Посмотреть сообщение
Ну ничо второй день не первый, мб через годок второй что нить и выучишь, со временем разберешься не переживай. Но ты вообще нулевой я тебе честно скажу, просто не люблю врать, но правда нулевущий. (ужас )
а я и не спорю что пока ни чего особо не понимаю в этом языке программирования
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
19.09.2013, 21:47     зачем нужно Временное значение? #11
Kristinka!!, чтобы лучше понять как меняются значения двух переменных. приведу пример из жизни.
есть две чашки. в одной налит чай, в другой кофе. И теперь их содержимое нужно обменять. что делать? на ум только одно приходит, это взять какую-нибудь дополнительную посуду для временного хранения
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
19.09.2013, 22:26     зачем нужно Временное значение? #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от _ Посмотреть сообщение
Kristinka!!, чтобы лучше понять как меняются значения двух переменных. приведу пример из жизни.
есть две чашки. в одной налит чай, в другой кофе. И теперь их содержимое нужно обменять. что делать? на ум только одно приходит, это взять какую-нибудь дополнительную посуду для временного хранения
Как _ в жизни меняет значения:
Код
 |  1   |      |  2   |         |  1   |      |  2   |
 | чай  |      | кофе |  ---->  | чай  |      | кофе |
 \______/      \______/         \______/      \______/

                                       |  3   |
                                       |      |
                                       \______/
      
                                          |
                                          v

 |  1   |      |  2   |         |  1   |      |  2   |
 | кофе |      |      |         |      |      | кофе |
 \______/      \______/  <---=  \______/      \______/ 
                               
        |  3   |                       |  3   |
        | чай  |                       | чай  |
        \______/                       \______/
           
           |
           v

 |  1   |      |   2  |
 | кофе |      |  чай |
 \______/      \______/         |  1   |      |  2   |
                         ---->  | кофе |      | чай  |
        |   3  |                \______/      \______/ 
        |      |
        \______/
Как это обычно делает компилятор:
Код
 |  1   |      |  2   |         |  2   |      |  1   |
 | чай  |      | кофе |  ---->  | кофе |      | чай  |
 \______/      \______/         \______/      \______/
gray_fox
19.09.2013, 22:28
  #13

Не по теме:

Цитата Сообщение от _ Посмотреть сообщение
есть две чашки. в одной налит чай, в другой кофе. И теперь их содержимое нужно обменять. что делать?
xor swap!

zer0mail
2187 / 1870 / 187
Регистрация: 03.07.2012
Сообщений: 6,650
Записей в блоге: 1
20.09.2013, 01:24     зачем нужно Временное значение? #14
Когда что-то непонятно, можно спросить так: почему сделано так, когда можно сделать иначе (и это иначе короче/быстрее) ? Может, у ТС есть способ, как меньше чем за три опрации обменять 2 значения без временной переменной...
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
20.09.2013, 06:51     зачем нужно Временное значение? #15
Цитата Сообщение от zer0mail Посмотреть сообщение
Может, у ТС есть способ, как меньше чем за три опрации обменять 2 значения без временной переменной...
Без временной можно, но опять же за три операции:
C++
1
2
3
a += b;
b = a - b;
a -= b;
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
20.09.2013, 07:14     зачем нужно Временное значение? #16
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Без временной можно, но опять же за три операции:
ну что ж, напишите свою шаблонную функцию таким методом, а мы посмотрим
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
20.09.2013, 08:11     зачем нужно Временное значение? #17
Цитата Сообщение от Croessmah Посмотреть сообщение
ну что ж, напишите свою шаблонную функцию таким методом, а мы посмотрим
А в чём, собственно говоря, сложность?

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std; //сойдёт и так
template<typename T>
void Swap(T &t1, T &t2){
    t1 += t2;
    t2 = t1 - t2;
    t1 -= t2;
}
void main(){
    setlocale(0, "RUS");
    int q = 10;
    int w = 13;
    cout << q << ' ' << w << endl;
    Swap(q, w);
    cout << q << ' ' << w;
    cin.get();
}
Всё компилится и работает, vs2012.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
20.09.2013, 08:19     зачем нужно Временное значение? #18
Цитата Сообщение от Бендерродригез Посмотреть сообщение
А в чём, собственно говоря, сложность?
А в функцию передадут скажем...ну... объекты, что тогда?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
template<typename T>
void Swap(T &t1, T &t2){
    t1 += t2;
    t2 = t1 - t2;
    t1 -= t2;
}
 
 
struct MYSUPERPUPERTYPE {
    double x1 ;
    double x2 ;
    int x3 ;
    MYSUPERPUPERTYPE * p1 ;
} ;
 
 
int main(){
    MYSUPERPUPERTYPE q ;
    MYSUPERPUPERTYPE w ;
    Swap(q, w);
}
Ваш способ сугубо специфичный.

Добавлено через 20 секунд

Не по теме:

Цитата Сообщение от Бендерродригез Посмотреть сообщение
Всё компилится и работает, vs2012.
Не помню чтобы студия пропускала void main

User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
20.09.2013, 12:10     зачем нужно Временное значение? #19
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Как это обычно делает компилятор:
хотел вчера спросить, но не успел. надо было компьютер выключать.
если честно, то не совсем понял что это означает. как можно обменять значения двух переменных за одну операцию?

x=2, y=3 обменяйте их значения за одну операцию!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2013, 15:08     зачем нужно Временное значение?
Еще ссылки по теме:

Зачем нужно u--? C++
C++ Зачем нужно закрывать файл?
Конструкторы - что это и зачем нужно? C++

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

Или воспользуйтесь поиском по форуму:
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
20.09.2013, 15:08     зачем нужно Временное значение? #20
Цитата Сообщение от Croessmah Посмотреть сообщение
А в функцию передадут скажем...ну... объекты, что тогда?

Ваш способ сугубо специфичный.

Добавлено через 20 секунд

Не по теме:


Не помню чтобы студия пропускала void main

Тогда переопределять operator+ и operator-, так, чтобы работали с каждым членом обхекта подобным образом по отдельности, но это идиотизм, поскольку этот "мой" метод не специфичен, а скорее из раздела занимательных задач по программированию. Хотя вопрос ещё одной переменной при обмене значений и решается, но подобная скупость на ресурсы - это уже паранойя.

Не по теме:

А void в данном случае - наследие чьего-то скопипазженного для проверки кода. Студии всё равно, даже предупреждений нет.

Yandex
Объявления
20.09.2013, 15:08     зачем нужно Временное значение?
Ответ Создать тему
Опции темы

Текущее время: 01:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru