14 czerwca 2012

ROZWIĄZANIE

W poprzednim poście kazałem wam napisać program, który pobierze 3 liczby całkowite do zmiennych liczba_1, liczba_2 i liczba_3, a następnie wykona działanie a+b*c i wyświetli jego wynik w miejscu słowa (wynik) w zdaniu:
Wynikiem działania a+b*c jest (wynik).

Oto on:

#include <iostream>
#include <cstdlib>

using namespace std;

main(void)
{
cout << "Podaj pierwsza liczbe: " << endl;
int liczba_1;
cin >> liczba_1;

cout << "Podaj druga liczbe: " << endl;
int liczba_2;
cin >> liczba_2;

cout << "Podaj trzecia liczbe: " << endl;
int liczba_3;
cin >> liczba_3;

int wynik;

wynik = liczba_1 + (liczba_2 * liczba_3);

cout << "Wynikiem dzialanie a + b * c jest: " << wynik << endl;

system("pause");
return 0;




}

Wprowadzanie danych z klawiatury


Nasz poprzedni program miał jedną poważną wadę – operuje tylko na liczbach, które przypiszemy do zmiennych podczas pisania programu, inny użytkownik nie miałby z niego żadnego pożytku. Aby to zmienić dodamy możliwość wprowadzenia dwóch liczb całkowitych (int), które będą służyły do obliczeń. W ten sposób program będzie interaktywny (jakie mądre słowo:-)) , tzn. użytkownik będzie miał wpływ (minimalny, ale dobre i to) na działanie programu, który sam upomni się na ekranie monitora o podanie potrzebnych liczb.
Najprostszą metodą pobrania danych z klawiatury jest instrukcja:
cin
(ang. Console Input – wejście konsoli), która działa podobnie do cout, z tą różnicą, że cout wyświetla na monitorze, a cin pobiera dane z klawiatury. Zmianie także ulega kierunek strumienia: z cin do zmiennej >>. Przykładowo, aby wczytać liczbę do zmiennej liczba trzeba napisać
cin>>liczba;
Ważną cechą strumieni jest to, że cin sam dopasowuje typ danych do typu zmiennej, do której przekazywany jest strumień. Oznacza to, że jeśli strumień ma przekazać dane do zmiennej typu float, to pobrany ciąg znaków zostanie przetworzony na liczbę zmiennoprzecinkową.
Kod:

#include <iostream>
#include <cstdlib>

using namespace std;

main()

{

int liczba;

cout<<„Podaj liczbe calkowita: ”;

cin>>liczba;
//pobiera liczbę całkowitą i umieszcza ją w zmiennej liczba
cout<<"\nTwoja liczba to: "<<liczba;
//najpierw przechodzi do następnej lini, a następnie wyświetla zawartość zmiennej liczba
system("pause");
return 0;

}
Wynik:
Podaj liczbę całkowitą: 34
Twoja liczba to: 34
Teraz możemy udoskonalić nasz kalkulator.
Kod:

#include <iostream>
#include <cstdlib>

using namespace std;

main(void)

{

int a,b;

cout<<"Podaj pierwsza liczbe: ";

cin>>a;

cout<<"Podaj druga liczbe: ";

cin>>b;

cout<<"a+b=”<<a+b<<”\n";

cout<<"a-b=”<<a-b<<”\n";

cout<<"a*b=”<<a*b<<”\n";

cout<<"a/b=”<<a/b<<”\n";

cout<<"a modulo b=”<<a%b<<”\n";

system("pause");
return 0;

}
Wynik:
Podaj pierwsza liczbę: 3
Podaj druga liczbę: 5
a+b=8
a-b=-2
a*b=15
a/b=0
a modulo b=3

Program działa bez zarzutu i jeśli uważnie czytałeś poprzednie rozdziały to nie będziesz miał problemów ze zrozumieniem jego działania. Zwróć uwagę, że komputer zaczyna z Tobą współpracować i na jego prośbę możesz podać dowolne (tj. ograniczone to typu int) liczby a i b. A kto go tego nauczył? – programista, czyli Ty!

Zadanie:
Napisz program, który pobierze 3 liczby całkowite do zmiennych liczba_1, liczba_2 i liczba_3, a następnie wykona działanie a+b*c i wyświetli jego wynik w miejscu słowa (wynik) w zdaniu:
Wynikiem działania a+b*c jest (wynik).

ROZWIĄZANIE

W ostatnim poście kazałem wam napisać 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.

Oto on:


#include <iostream>
#include <cstdlib>


using namespace std;


main(void)


{


double a,b;


a = 2.5;


b = 4.2;


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;


a++;


cout << "a++=" << a << endl;


b--;


cout << "b--=" << b << endl;


system("pause");
return 0;
}

Działania arytmetyczne

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.

5 czerwca 2012

ROZWIĄZANIE

W ostatnim poście kazałem wam napisać program, w którym zadeklarujesz po jednej zmiennej typu int, float i char o dowolnej nazwie, a następnie przypiszesz im wartości odpowiednio char = "T", int = "42 i float = "0.25.Wyświetl je na ekranie.

Oto rozwiązanie:

#inclued <iostream>
#include <cstdlib>


using namespace std;


int main(void)
{
   char tekst = 'T';
   int liczba = 42;
   float liczba2 = 0.25;


   cout << "tekst: " << tekst << ' ' << "liczba całkowita: " << liczba << ' ' << "liczba zmienno przecinkowa: " << liczba2 << endl;




system("PAUSE");
return 0;
}