Zamiana wartości dwóch zmiennych

Zad. 1. Napisz program, który wykona zamianę wartości zmiennych typu całkowitego:

  • z wykorzystaniem zmiennej pomocniczej
  • bez zmiennej pomocniczej

 

Rozwiązanie

Z wykorzystaniem zmiennej pomocniczej

Załóżmy, że nasze zmienne nazywają się a i b.

Niech a = 3 i b = 5.

pod zmienną pomocniczą pom zapisujemy to co znajduje się pod zmienną a

pom = a

następnie wartość zmiennej a nadpisujemy wartością zmiennej b,

a = b

w ostatnim kroku, nadpisujemy wartość zmiennej b wartością zmiennej pom, która przechowuje wartość początkową zmiennej a:

b = a

 
#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{	
	int a, b, pom;

	cout<<"Podaj wartość zmiennej a: ";
	cin>>a;

	cout<<"Podaj wartość zmiennej b: ";
	cin>>b;

	system("cls");

	cout<<"Przed zamianą: a = "<<a<<", b = "<<b<<endl;

	//zamiana wartości zmiennych
	pom = a;
	a = b;
	b = pom;

	cout<<"Po zamianie: a = "<<a<<", b = "<<b<<endl;

	system("PAUSE");
	return 0;
}
 

Bez zmiennej pomocniczej

Niech a = 3 i b = 5.

a = a - b (a = 3 - 5 = - 2)

b = b + a (b = 5 + (-2) = 3)

a = b - a (b = 3 - (-2) = 5)

Taki sposób zamiany wartości zmiennych jest nieefektywny, ponieważ potrzebuje większej ilości operacji arytmetycznej (w pierwszym przypadku nie wykonuje się żadnej operacji arytmetycznej).

 

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
	int a, b;

	cout<<"Podaj wartość zmiennej a: ";
	cin>>a;
	
	cout<<"Podaj wartość zmiennej b: ";
	cin>>b;

	system("cls");
	
	cout<<"Przed zamianą: a = "<<a<<", b = "<<b<<endl;

	//zamiana wartości zmiennych
	a = a - b;
	b = b + a;
	a = b - a;
	
	cout<<"Po zamianie: a = "<<a<<", b = "<<b<<endl;

	system("PAUSE");
	return 0;
}