# HG changeset patch
# User František Kučera <franta-hg@frantovo.cz>
# 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 <barvicky.h>
+#include <string>
+
+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 <string>
+
+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 <iostream>
+#include <string>
+#include <ukazatele.h>
+#include <barvicky.h>
+
+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);
+