int a,b,temp;
printf("enter the values of a & b"); //could be done in diff. two lines for the input//
scanf("%d %d",&a,&b);
printf("the values of a=%d & b=%d before swapping",a,b);
// swapping without using arithmetic operators.....
temp=a;
a=b;
b=temp;
printf("the values of a=%d & b=%d after swapping",a,b);
getch();
int iA = 5;
int iB = 6;
int iA = iA + iB; // iA is now 11
int iB = iA - iB; // iB is now 5
int iA = iA - iB; // iA is now 6
Note: Even though no overt variable has been created, the compiler has created temporary variables because a variable left of the equal sign has been used on the right.
# include
# include
void main()
{
clrscr();
int a,b;
printf ("Enter the first value:");
scanf ("%d",& a );
printf ("Enter the second value:");
scanf ("%d",& b );
printf ("\n\nBefor swaping the values ");
printf ("\nThe first value is %d",a);
printf ("\nthe second value is %d",b);
printf ("\n\nAfter swaping the values ");
printf ("\nThe first value is %d",b);
printf ("\nthe second value is %d",a);
}
OUTPUTEnter the first value:8
Enter the second value:5
Befor swaping the values
The first value is 8
the second value 5
After swaping the values
The first value is 5
the second value 8
Swapping two values without using a third variable is made possible through a series of three XOR/assign operations, alternating the operands.
Consider the following declarations:
int x = 0;
int y = 1;
The following statement will swap the values of x and y:
x ^= y ^= x ^= y; // swap
The same statement implemented as a function:
void swap(int &x, int &y){ x ^= y ^= x ^= y; }
void swap (int* a, int* b) {
int temp = *a;
*a = *b;
*b = t;
}
With a temporary variabele:
tmp= x, x=y, y=tmp;
void swap (int* x, int* y) { (*x)^=(*y)^=(*x)^=(*y);
}
swap (int *a, int *b) {
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
The required c program is given below /*Swapping(interchange) the two entered numbers*/ #include<stdio.h> main() { /*Without using third variable*/ int a,b,t; printf("Enter a:"); scanf("%d",&a); printf("Enter b:"); scanf("%d",&b); a=a+b; b=a-b; a=a-b; printf("\n After swapping without using third variable"); printf("\na=%d\nb=%d",a,b); }
To swap two numbers N1 and N2, using a third variable T... T = N1; N1 = N2; N2 = T;
a ^= b; b ^= a; a ^= b;
Compare the first two numbers with the ternary operator. Store the result in a temporary variable. Compare the temporary variable with the third number, again using the ternary operator.
the simple way can be explained by example as: let there be two integers as : int a=10,b=5; if we want to use third variable then let third variable be int c; and sorting is done as : c=a; a=b; b=c; if it is to be done by without using third variable then : a=a+b; b=a-b; a=a-b; at last the variable is sorted.
The required c program is given below /*Swapping(interchange) the two entered numbers*/ #include<stdio.h> main() { /*Without using third variable*/ int a,b,t; printf("Enter a:"); scanf("%d",&a); printf("Enter b:"); scanf("%d",&b); a=a+b; b=a-b; a=a-b; printf("\n After swapping without using third variable"); printf("\na=%d\nb=%d",a,b); }
To swap two numbers N1 and N2, using a third variable T... T = N1; N1 = N2; N2 = T;
a ^= b; b ^= a; a ^= b;
Compare the first two numbers with the ternary operator. Store the result in a temporary variable. Compare the temporary variable with the third number, again using the ternary operator.
// Arithmetic method a = a + b; b = a - b; a = a - b; // XOR method a = a ^ b; b = a ^ b; a = a ^ b;
There are two ways in which you can swap without a third variable. 1. Using xor operation swap( int *a, int *b) { *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b; } 2. Using addition and subtraction swap( int *a, int *b) { *a = *a + *b; *b = *a - *b; *a = *a - *b; } }
To swap two variables without using a third variable, use exclusive or manipulation... a ^= b; b ^= a; a ^= b;
Yes. int a, b; a= 2; b= 3; a= a+b;
the simple way can be explained by example as: let there be two integers as : int a=10,b=5; if we want to use third variable then let third variable be int c; and sorting is done as : c=a; a=b; b=c; if it is to be done by without using third variable then : a=a+b; b=a-b; a=a-b; at last the variable is sorted.
Third March, two thousand and eleven.
Yes, using whole numbers.
swap (int *pa, int *pb) { *pa ^= *pb; *pa ^= *pa; *pa ^= *pb; }