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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Kristinka!!
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 39
#1

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

19.09.2013, 21:01. Просмотров 1051. Ответов 24
Метки нет (Все метки)

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, берем его оттуда
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 21:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос зачем нужно Временное значение? (C++):

Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить? - C++
Вот еще один вопрос зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может...

Зачем нужно u--? - C++
Как я понимаю это счетчик итераций !! но зачем он ?? #include <iostream> #include <stdio.h> #include <conio.h> using namespace...

Зачем нужно бинарное дерево? - C++
Какие задачи можно решать с помощью бинарного дерева?

Наследование , зачем оно нужно ? - C++
Добрый день , который день бьюс с темой Добавлено через 3 минуты Понимаю что можно создавать классы окон в Windows от родительского...

Зачем нужно закрывать файл? - C++
Зачем надо в конце выполнения программы использовать такую команду? stream.close();

Сортировка пузырьком. Зачем нужно 2 цикла? - C++
for(int j=1;j<=k;j++) for(int i=1;i<=k;i++) if(A<A) { max=A; A=A; A=max; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
20.09.2013, 07:14 #16
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Без временной можно, но опять же за три операции:
ну что ж, напишите свою шаблонную функцию таким методом, а мы посмотрим
0
Бендерродригез
Сгибальщик
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.
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 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

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

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

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

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

Не по теме:


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

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

Не по теме:

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

0
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
20.09.2013, 15:30 #21
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Студии всё равно, даже предупреждений нет.
а вот код блокс не будет закрывать на это глаза
C++
1
2
void main()  // error: '::main' must return 'int'|
{
0
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
20.09.2013, 22:46 #22
Цитата Сообщение от _ Посмотреть сообщение
хотел вчера спросить, но не успел. надо было компьютер выключать.
если честно, то не совсем понял что это означает. как можно обменять значения двух переменных за одну операцию?

x=2, y=3 обменяйте их значения за одну операцию!
Это вид на программу через призму компилятора. Значения двух переменных он может обменять без использования третьей: просто дальше в программе считается, что значение x лежит там, где лежало значение y, а значение y — наборот. Содержимое памяти, естественно, так обменивать не получится, так как ячейки памяти, в отличие от фактически умозрительного понятия переменной, всё же существуют в реальности.
1
Croessmah
21.09.2013, 08:38
  #23

Не по теме:

Цитата Сообщение от Бендерродригез Посмотреть сообщение
Всё компилится и работает, vs2012.
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Студии всё равно, даже предупреждений нет.
у меня стояла 2012 студия, с дефолными настройками подобное она не пропускала

0
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
21.09.2013, 08:44 #24
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:



у меня стояла 2012 студия, с дефолными настройками подобное она не пропускала

Не по теме:

Так же всё по дефолту. Может, последствия 3его апдейта. Кстати, почему "стояла"?

0
Croessmah
21.09.2013, 08:46     зачем нужно Временное значение?
  #25

Не по теме:

Цитата Сообщение от Бендерродригез Посмотреть сообщение
Кстати, почему "стояла"?
Потому что сейчас у меня Debian

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2013, 08:46
Привет! Вот еще темы с ответами:

Зачем нужно private наследование в классах? - C++
Если можно, то покажите небольшой пример

Зачем нужно компилировать библиотеку C++ Box2d? - C++
Мне интересна причина того, почему разработчики некоторых C++ библиотек (в моей ситуации Box2d) не дают dll или lib библиотеки, а дают...

Конструкторы - что это и зачем нужно? - C++
Объясните, пожалуйста, для чего нужны конструкторы и деструкторы? Что это вообще?

Зачем нужно опережающее объявление класса в заголовке? - C++
Часто натыкаюсь на такой код: class NewType; class Class1 { public: Class1(); private: NewType *field; };


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.09.2013, 08:46
Ответ Создать тему
Опции темы

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