# HG changeset patch # User František Kučera # Date 1253480910 -7200 # Node ID 7b718fcf981cb0cfa1b40ecc8b3d46f1e42ed00e # Parent 481514f85b3aa3a5a134267c3baed711ec9ef48e Projekt „ukazatele“: pro pochopení ukazatelů (pointerů) v C++ diff -r 481514f85b3a -r 7b718fcf981c c++/info.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/info.txt Sun Sep 20 23:08:30 2009 +0200 @@ -0,0 +1,1 @@ +Příklady programů psané v jazyce C++ nebo C. diff -r 481514f85b3a -r 7b718fcf981c c++/ukazatele/barvicky.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/ukazatele/barvicky.cpp Sun Sep 20 23:08:30 2009 +0200 @@ -0,0 +1,29 @@ +#include +#include + +using namespace std; + +string obarvi (string text, int barva) { + string zacatek; + string konec; + + switch (barva) { + case BARVA_ZELENA : + zacatek = string("\033[22;32m"); + konec = string("\033[0m"); + break; + case BARVA_CERVENA : + zacatek = string("\033[22;31m"); + konec = string("\033[0m"); + break; + dafault: + zacatek = (""); + konec = (""); + } + + return zacatek + text + konec; +} + +string obarvi (const char * text, int barva) { + return obarvi(string(text), barva); +} diff -r 481514f85b3a -r 7b718fcf981c c++/ukazatele/barvicky.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/ukazatele/barvicky.h Sun Sep 20 23:08:30 2009 +0200 @@ -0,0 +1,10 @@ +#include + +using namespace std; + +const int BARVA_CERVENA = 1; +const int BARVA_ZELENA = 2; + +string obarvi (string text, int barva); +string obarvi (const char * text, int barva); + diff -r 481514f85b3a -r 7b718fcf981c c++/ukazatele/ukazatele.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/ukazatele/ukazatele.cpp Sun Sep 20 23:08:30 2009 +0200 @@ -0,0 +1,45 @@ +#include +#include +#include +#include + +using namespace std; + +int main () { + cout << obarvi("*** Ukazatele ***", BARVA_ZELENA) << endl << endl; + upravPromennou(); +} + +void upravPromennou() { + int x; + + x= 100; + upravSpatne(x); + cout << obarvi("špatný výsledek: ", BARVA_ZELENA) << x << endl; + + x = 100; + upravDobre(&x); + cout << obarvi("dobrý výsledek: ", BARVA_ZELENA) << x << endl; + + + /** Nefunguje → error: invalid conversion from ‘int’ to ‘int*’ */ + //x = 100; + //upravDobre(x); + //cout << obarvi("dobrý výsledek: ", BARVA_ZELENA) << x << endl; + + /** Nefunguje → error: invalid conversion from ‘int*’ to ‘int’ */ + //x= 100; + //upravSpatne(&x); + //cout << obarvi("špatný výsledek: ", BARVA_ZELENA) << x << endl; +} + +/** Upravujeme pouze kopii hodnoty n – úprava platí jen v rámci této funkce */ +void upravSpatne(int n) { + n = 123; +} + +/** Upravíme hodnotu v paměti, do které ukazuje *n – úprava platí globálně */ +void upravDobre(int *n) { + *n = 123; +} + diff -r 481514f85b3a -r 7b718fcf981c c++/ukazatele/ukazatele.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/ukazatele/ukazatele.h Sun Sep 20 23:08:30 2009 +0200 @@ -0,0 +1,4 @@ +void upravPromennou(); +void upravSpatne(int n); +void upravDobre(int *n); +