W C++ istnieje, jak w każdym innym języku programowania, możliwość wykonywania działań arytmetycznych na zmiennych i liczbach. Oto i one:
Symbole stosowane w języku C++ |
+ | Dodawanie |
- | Odejmowanie |
* | Mnożenie |
/ | Dzielenie |
++ | Inkrementacja (zwiększenie wartości zmiennej o 1) |
-- | Dekrementacja (zmniejszenie wartości zmiennej o 1) |
% | Dzielenie modulo (podaje resztę z dzielenia liczby przez liczbę, działa tylko na liczbach całkowitych) |
= | Przypisanie (lewa strona przyjmuje wartość prawej) |
Każdy kto zna podstawy matematyki, nie powinien mieć problemów ze zrozumieniem tego materiału, ale rzeczy, które mogą sprawić kłopot postaram się wytłumaczyć przy użyciu małych programików.
#include <iostream>
#include <cstdlib>
using namespace std;
main(void)
{
int a;
a=5;
int b=2;
cout<<"5 / 2="<<a/b;
system("pause");
return 0;
}
Jak widać zastosowane w tym przykładzie dzielenie bez reszty, zachowuje się nieco dziwnie (5/2=2?!). Najprościej wytłumaczyć to tym, że liczby typu całkowitego nie mogą przechowywać ułamków i przechowują tylko ich część całkowitą(w tym przypadku 2), ale gdyby dzielić dwie liczby rzeczywiste to wynik byłby normalnym ułamkiem,(np. jeżeli a i b zdefiniujemy jako float, a=5 b=2 to a/b=2.5).
#include <iostream>
#include <cstdlib>
using namespace std;
main(void)
{
int b=2;
b++;
cout<<"b="<<b<<"\n";
cout<<"5 podzielic na 3="<<5/b<<endl;
cout<<"5 modulo 3="<<5%b;
system("pause");
return 0;
}
Bardzo przydatną rzeczą są natomiast operatory: inkrementacji (zastosowany w powyższym przykładzie b++) i dekrementacji, będące odpowiednikami zwiększenia i zmniejszenia o 1 (b++ to odpowiednik b=b+1). Inkrementacja oznacza, że zmienna przyjmuje wartość równą poprzedniej swej wartości powiększonej o 1. Analogicznie jest z dekrementacją(b=b-1). Wykorzystuje się je tam, gdzie często następuję zmiana o 1 wartości zmiennej. Ciekawostką jest możliwość wykorzystania inkrementacji przed i po nazwie zmiennej. Powoduje to dwa różne efekty:
int x=5;
cout<<x++;//wyświetli 5 i zwiększy wartość zmiennej
x=5;
cout<<++x;//zwiększy wartość zmiennej i wyświetli 6
Kolejnym dziwactwem (na pierwszy rzut oka) jest operator reszty z dzielenia % (8%3=2), który w wyniku daje całkowitą liczbę stanowiącą resztę z dzielenia tych liczb przez siebie(8/3=2*3 i 2 reszty).
A teraz duży przykład, będący ilustracją dla całego rozdziału.
Kod:
#include <iostream>
#include <cstdlib>
using namespace std;
main(void)
{
int a,b;
a=8;//a przyjmuje wartość 8
b=3;
cout << "a=” << a <<” b=” << b << endl;
cout << "a+b=” << a+b << endl;
cout << "a-b=” << a-b << endl;
cout << "a*b=” << a*b << endl;
cout << "a/b=” << a/b << endl;//dzielenie całkowite bez reszty
cout << "a modulo b=” << a%b << endl;//reszta z dzielenia(modulo)
a++;
cout << „a++=” << a << endl;
b--;
cout << „b--=” << b << endl;
system("pause");
return 0;
}
Wynik:
a = 8 b = 3
a+b = 11
a-b = 5
a*b = 24
a/b = 2
a modulo b = 2
a++ = 9
b-- = 2
Należy pamiętać, o kolejności działań matematycznych i możliwości wykorzystania nawiasów do wpływania na ich kolejność.
Zadanie:
Napisz program, który wykona te same działania, co nasz główny program, z wyjątkiem reszty z dzielenia, z tą różnicą, że jako wartości zmiennych użyjemy liczb 2.5 i 4.2.