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

Описать процедуру, меняющую содержимое переменных X и Y - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
mybabloo
 Аватар для mybabloo
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 40
14.02.2010, 23:57     Описать процедуру, меняющую содержимое переменных X и Y #1
вот тут решил разобраться с языком си, решал задачки и вот напоролся на такую:
Описать процедуру Swap(X, Y), меняющую содержимое переменных X и Y.
Собстна как сделать такую штуку?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2010, 23:57     Описать процедуру, меняющую содержимое переменных X и Y
Посмотрите здесь:

Описать процедуру, меняющую порядок следования элементов массива C++
C++ Описать процедуру в С
C++ Описать процедуру InvertDigits(K), меняющую порядок следования цифр числа на обратный
Создайте функцию, заменяющую содержимое двух переменных их суммой и разностью. C++
Массив: Описать функцию swap(A,B), меняющую местами максимальные элементы матриц А и В. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
15.02.2010, 01:17     Описать процедуру, меняющую содержимое переменных X и Y #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
void Swap(int *x, int *y);
 
int main()
{
    int a = 5;
    int b = 7;
    
    printf("a=%d\tb=%d\n", a, b);
    Swap(&a, &b);
    printf("a=%d\tb=%d\n", a, b);
    
    return 0;
}
 
void Swap(int *x, int *y)
{
    int tmp = *x;
    *x = *y;
    *y = tmp;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.02.2010, 05:44     Описать процедуру, меняющую содержимое переменных X и Y #3
C++
1
2
3
4
5
6
template <TBase> void Swap(TBase X,Y)
{
 X&=Y;
 Y&=X;
 X&=Y;
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
15.02.2010, 10:24     Описать процедуру, меняющую содержимое переменных X и Y #4
Цитата Сообщение от taras atavin Посмотреть сообщение
C++
1
2
3
4
5
6
template <TBase> void Swap(TBase X,Y)
{
 X&=Y;
 Y&=X;
 X&=Y;
}
Так ничего не выйдет. Во-первых переменные надо передовать по ссылке:
C++
1
template <TBase> void Swap(TBase &x,&y)
Во-вторых для этого алгоритма используется исключающее или:
C++
1
2
3
4
5
{
   x ^= y;
   y ^= x;
   x ^= y;
}
Потому как x &= y => x & y
y &= x => y & ( x & y) = > x & y
x &= y => (x & y) & (x & y) => x & y

x ^= y => x ^ y
y ^= x => y ^ (x ^ y) => x ^ (y ^ y) => x ^ 0 => x
x ^= y => (x ^ y) ^ x => y ^ (x ^ x) => y ^ 0 => y

Добавлено через 4 минуты
Цитата Сообщение от kazak Посмотреть сообщение
Так ничего не выйдет. Во-первых переменные надо передовать по ссылке:
А в Си передовать надо указатели на переменные, как у Графа в коде
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
15.02.2010, 11:36     Описать процедуру, меняющую содержимое переменных X и Y #5
C
1
2
3
4
5
6
void swap(int &A, int &B)
{
    int t = A;
    A = B;
    B = t;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.02.2010, 11:53     Описать процедуру, меняющую содержимое переменных X и Y #6
Да, точно:
C++
1
2
3
4
5
6
template <TBase> void Swap(TBase &X, TBase &Y)
{
 X^=Y;
 Y^=X;
 X^=Y;
}
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
15.02.2010, 11:56     Описать процедуру, меняющую содержимое переменных X и Y #7
Цитата Сообщение от kazak Посмотреть сообщение
Во-вторых для этого алгоритма используется исключающее или:
мне вот интересно. нигде не сказано, что тип переменных - int. как вы будете менять значения двух векторов например?
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
15.02.2010, 12:03     Описать процедуру, меняющую содержимое переменных X и Y #8
как вы будете менять значения двух векторов например?
C
1
2
3
4
5
6
7
8
9
10
void wswap(int * A, int * B, int size)
{
    int T;
    while(size--)
    {
        T    = *A;
        *A++ = *B;
        *B++ =  T;
    }
}
мне вот интересно. нигде не сказано, что тип переменных - int.
задание надо точнее указывать
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.02.2010, 12:04     Описать процедуру, меняющую содержимое переменных X и Y #9
Цитата Сообщение от zim22 Посмотреть сообщение
мне вот интересно. нигде не сказано, что тип переменных - int
Спициализируй шаблон для всех твоих типов и меняй.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
15.02.2010, 12:59     Описать процедуру, меняющую содержимое переменных X и Y #10
taras atavin, ты не понял. проследи цепочку рассуждений:

Цитата Сообщение от mybabloo Посмотреть сообщение
Описать процедуру Swap(X, Y), меняющую содержимое переменных X и Y.
Цитата Сообщение от kazak Посмотреть сообщение
для этого алгоритма используется исключающее или
Цитата Сообщение от zim22 Посмотреть сообщение
нигде не сказано, что тип переменных - int. как вы будете менять значения двух векторов (любых типов данных) например? (используя исключающее или)
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
15.02.2010, 13:02     Описать процедуру, меняющую содержимое переменных X и Y #11
Прошу прощения, но в принципе где-то глубоко, все равно будут битовые операции и исключающее или xD
А так, тогда описываем процедуру копирования для каждого типа данных и пользуемся ею. memcpy, наверное подойдет, если знать размер.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
15.02.2010, 13:22     Описать процедуру, меняющую содержимое переменных X и Y #12
Цитата Сообщение от fasked Посмотреть сообщение
memcpy, наверное подойдет, если знать размер.
http://www.cplusplus.com/forum/general/10835/
It is undefined behavior to memcpy non-POD types. Or, put another way, the result of memcpy in C++ is only defined for POD types.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
15.02.2010, 13:24     Описать процедуру, меняющую содержимое переменных X и Y #13
Цитата Сообщение от zim22 Посмотреть сообщение
мне вот интересно. нигде не сказано, что тип переменных - int. как вы будете менять значения двух векторов например?
Поэлементно.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
15.02.2010, 13:33     Описать процедуру, меняющую содержимое переменных X и Y #14
Цитата Сообщение от kazak Посмотреть сообщение
Поэлементно.
очень плохо.

http://www.cplusplus.com/reference/stl/vector/swap/
All iterators, references and pointers remain valid for the swapped vectors.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
15.02.2010, 13:38     Описать процедуру, меняющую содержимое переменных X и Y #15
Это немного из другой оперы)
Цитата Сообщение от mybabloo Посмотреть сообщение
вот тут решил разобраться с языком си
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
15.02.2010, 13:47     Описать процедуру, меняющую содержимое переменных X и Y #16
Цитата Сообщение от kazak Посмотреть сообщение
вот тут решил разобраться с языком си
упс
***
в 3 сообщении taras atavin применил шаблоны. вот я и подумал, что С++.
Описать процедуру, меняющую содержимое переменных X и Y
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
15.02.2010, 14:06     Описать процедуру, меняющую содержимое переменных X и Y #17
zim22, многие забывают ))..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2010, 16:01     Описать процедуру, меняющую содержимое переменных X и Y
Еще ссылки по теме:

C++ Pадача на процедуры (описать процедуру Swap(X,Y), меняющую содержимое переменных X и Y )
C++ Функция заменяющая содержимое двух переменных их суммой и разностью
C++ Описать функцию, меняющую порядок элементов вещественного массива

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

Или воспользуйтесь поиском по форуму:
mybabloo
 Аватар для mybabloo
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 40
15.02.2010, 16:01  [ТС]     Описать процедуру, меняющую содержимое переменных X и Y #18
Благодарю )
Yandex
Объявления
15.02.2010, 16:01     Описать процедуру, меняющую содержимое переменных X и Y
Ответ Создать тему
Опции темы

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