Programowanie i algorytmy

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;
}