/* |
Author : Alim Ul Karim |
|------------------------------------------|
| Code tested on CodeBlocks , GCC Compiler
|
| Example of Swapping in C/C++, Save in .cpp |
|------------------------------------------|
*/
#include
<stdio.h>
//using third variable
void swap_based_on_address(int *a, int *b){
if ( *a == *b ){
return;}
int temp =
*a;
*a
= *b;
*b
= temp;
}
//using third variable
void swap_based_on_address(int &a, int &b){
if ( a == b
){
return;}
int temp =
a;
a = b;
b = temp;
}
//using without using third
variable, XOR(Bitwise Swapping)
void swap_using_xor(int &a, int &b){
//no
need to change if a=b, and this
condition is must for XOR
if ( a == b
){
return;}
a = a ^
b;
b = a ^
b;
a = a ^
b;
}
//using without using third
variable, using addition and subtraction
void swap_using_add(int &a, int &b){
//no need to change if a=b
if ( a == b
){
return;}
a = a +
b;
b = a -
b;
a = a -
b;
}
//using without using third
variable, using multiplication , division
void swap_using_division(int &a, int &b){
//no need to change if a=b
if(
a == b ){
return;}
a = a * b;
b = a /
b;
a = a /
b;
}
int main(){
// save file as a .cpp format
int a =
10 , b = 12;
int backup_a = a , backup_b = b;
swap_based_on_address(&a , &b);
printf("swapping using memory location :\nFrom(a=%d,b=%d) to a=%d , b=%d\n\n"
, backup_a
, backup_b ,
a ,b);
a = backup_a, b = backup_b;
swap_based_on_address(a , b); // save file as a .cpp format
printf("swapping using memory location by sending only value
to a function :\nFrom(a=%d,b=%d) to a=%d
, b=%d\n\n"
, backup_a , backup_b , a ,b);
a = backup_a, b = backup_b;
swap_using_xor(a , b); // save file as a .cpp format
printf("Swap using XOR :\nFrom(a=%d,b=%d)
to a=%d , b=%d\n\n" , backup_a , backup_b ,
a ,b);
a = backup_a, b = backup_b;
swap_using_add(a , b); // save file as a .cpp format
printf("Swap using addition, subtraction :\nFrom(a=%d,b=%d) to a=%d , b=%d\n\n"
,
backup_a ,
backup_b , a ,b);
a = backup_a, b = backup_b;
swap_using_division(a , b); // save file as a .cpp format
printf("Swap using multiplication, division :\nFrom(a=%d,b=%d) to a=%d , b=%d\n\n"
,
backup_a ,
backup_b , a ,b);
return 0;
}
|