ZPO 2015: II termin egzaminu oraz poprawa laboratoriów

Drugi termin egzaminu został zaplanowany na: 18 lutego 10 marca 2016 (czwartek), na godz. 18:00 w sali 033 (pracownia komputerowa) budynek nr 21 Auditorium Maximum. Czas egzaminu: 90 minut.
Przypominam o zasadach przeprowadzania egzaminu (procedura sprawdzania tożsamości, zakaz korzystania z telefonów i własny zegarek), które są opisane tutaj.

Poprawa laboratoriów odbędzie się tuż przed egzaminem, tj. 18 lutego 10 marca, od godz. 14:00 14:30 również w sali 033. Będzie trwać do około 17:30. Dziękuję zainteresowanym za przesłane mi zgłoszeń udziału.

Poprawa ćwiczeń

Osoby zainteresowane poprawą negatywnej oceny z zajęć laboratoryjnych proszę o wysłanie mi mailem swojego zgłoszenia. Taka informacja jest mi potrzebna aby zarezerwować w odpowiednim czasie pracownię komputerową. Metoda poprawy będzie podobna, jak w przypadku Programowania Obiektowego: konieczne będzie napisanie programu, w którym zademonstrowana zostanie pełna wiedza z całego wykładu (włącznie z metaprogramowaniem i C++11). Planowany czas trwania: 3 godz. zegarowe. Czekam na zgłoszenia do piątku, 5.02 (potem będę nieobecny na uczelni aż do początku letniego semestru). Jeżeli zgłoszeń nie będzie, poprawa nie zostanie zorganizowana.

Wyniki z egzaminu zerowego

Lista osób, które pozytywnie zaliczyły egzamin zerowy. Wiersze zawierają nr indeksu i ocenę. Wyniki uwzględniają ustalenia dotyczące udziału w specjalnym wykładzie prof Seredyńskiego.

  1. 83824 3.5
  2. 90891 3
  3. 90998 5
  4. 91034 3
  5. 91063 3
  6. 91159 3
  7. 92444 3.5
  8. 93292 4.5
  9. 95109 4
  10. 95127 4.5
  11. 95145 3.5
  12. 95164 3.5
  13. 95181 5
  14. 95194 3
  15. 95221 4
  16. 95224 3
  17. 95229 4
  18. 95231 4
  19. 95257 4
  20. 95258 4.5
  21. 95281 3.5
  22. 96500 3
  23. 96517 3
  24. 96561 5
  25. 96565 5
  26. 96585 4.5
  27. 101683 3
  28. 102035 3.5

Lista osób, które uczestniczyły w egzaminie zerowym, ale ich liczba zdobytych punktów nie przekroczyła progowej wartości 50% możliwych do zdobycia punktów.

  1. 82633
  2. 86475
  3. 87935
  4. 88384
  5. 90986
  6. 91055
  7. 91141
  8. 95142
  9. 95149
  10. 95162
  11. 95198
  12. 95228
  13. 95233
  14. 95255
  15. 96518
  16. 96578

Gdyby ktoś uczestniczył w egzaminie i jest zapisany na liście obecności, ale nie został wymieniony na żadnej z list i nie jest zwolniony z egzaminu za bardzo dobre wyniki z laboratoriów, proszę o pilny kontakt.

Wyniki z laboratoriów oraz zwolnienia z egzaminu

Poniżej znajdują się wyniki z zajęć laboratoryjnych w postaci listy. Każdy wiersz zawiera: nr indeksu, sumę zdobytych punktów, proponowaną ocenę, oraz – w przypadku bardzo wysokiej liczby zdobytych punktów – również proponowaną ocenę z wykładu.

Proszę o weryfikację liczby zdobytych punktów. W razie niezgodności ze stanem faktycznym proszę o pilny kontakt do prowadzącego zajęcia laboratoryjne.

  1. 75496 11 2
  2. 82633 16 3
  3. 83824 15 3
  4. 84372 28 5 ;   5
  5. 86197 0 2
  6. 86452 9 2
  7. 86475 21 3.5
  8. 87578 16 3
  9. 87935 15 3
  10. 88384 20 3.5
  11. 90891 26 4.5
  12. 90910 30 5 ;   5
  13. 90926 3 2
  14. 90932 14 2
  15. 90984 0 2
  16. 90986 16 3
  17. 90998 16 3
  18. 91029 16 3
  19. 91034 17 3
  20. 91041 30 5 ;   5
  21. 91055 19 3.5
  22. 91058 15 3
  23. 91062 0 2
  24. 91063 24 4
  25. 91077 0 2
  26. 91131 3 2
  27. 91134 0 2
  28. 91141 15 3
  29. 91143 0 2
  30. 91157 3 2
  31. 91159 17 3
  32. 92414 0 2
  33. 92421 5 2
  34. 92436 0 2
  35. 92444 17 3
  36. 93292 20 3.5
  37. 95109 21 3.5
  38. 95127 17 3
  39. 95130 3 2
  40. 95134 0 2
  41. 95142 20 3.5
  42. 95145 25 4.5
  43. 95146 14 2
  44. 95147 6 2
  45. 95149 15 3
  46. 95150 30 5 ;   5
  47. 95155 28 5 ;   5
  48. 95158 10 2
  49. 95159 0 2
  50. 95162 15 3
  51. 95164 21 3.5
  52. 95181 27 4.5
  53. 95188 17 3
  54. 95194 15 3
  55. 95196 28 5 ;   5
  56. 95198 24 4
  57. 95202 4 2
  58. 95214 3 2
  59. 95221 21 3.5
  60. 95224 20 3.5
  61. 95227 0 2
  62. 95228 17 3
  63. 95229 16 3
  64. 95231 15 3
  65. 95233 17 3
  66. 95246 3 2
  67. 95251 9 2
  68. 95252 30 5 ;   5
  69. 95255 16 3
  70. 95257 27 4.5
  71. 95258 15 3
  72. 95260 30 5 ;   5
  73. 95264 0 2
  74. 95265 4 2
  75. 95281 17 3
  76. 96500 25 4.5
  77. 96517 24 4
  78. 96518 24 4
  79. 96532 28 5 ;   5
  80. 96556 30 5 ;   5
  81. 96559 18 3
  82. 96561 26 4.5
  83. 96565 15 3
  84. 96575 0 2
  85. 96578 17 3
  86. 96585 17 3
  87. 96586 0 2
  88. 96589 30 5 ;   5
  89. 96593 9 2
  90. 96598 5 2
  91. 96862 3 2
  92. 101683 16 3
  93. 102035 14* 3

Hint: materiały pomocnicze przez ćwiczeniami 7 (poprawa zera)

Zadanie poprawkowe będzie polegało na przygotowaniu serii wartości pochodzących z generatora liczb losowych o wybranym rozkładzie, a następnie wykonaniu na tych danych określonych obliczeń. Wymagana będzie znajomość algorytmów oraz tworzenia wyrażeń lambda wykorzystywanych jako predykaty i funktory zamiast obiektów funkcyjnych.

Poniżej kod programu, którego znajomość może bardzo przydać się na zajęciach.


#include <iostream>
#include <iomanip>
#include <random>
#include <functional>
#include <algorithm>
#include <map>
#include <string>

using namespace std;

int round( double fValue ) {
    return fValue < 0 ? (int)ceil( fValue - 0.5 )
        : (int)floor( fValue + 0.5 );
}

int main () {

	// generator liczb losowych o rozkładzie równomiernym 
	// do zainicjalizowania losową wartością właściwego generatora
	random_device rd; 

	// właściwy generator liczb losowych o rozkładzie równomiernym 
	// - Mersenne Twister, autorzy:  Matsumoto and Nishimura, 1998
	mt19937 engine(rd()); 

	// funktor do generowania liczb losowych z rozkładu normalnego; 
	// konfiguracja rozkładu: średnia 0, sigma 3
	normal_distribution<> normal(0.0, 3.0); 

	// funktor do prawidłowego wywołania potrzebuje generatora 
	// liczb losowych dlatego musi być wywoływany z argumentem 
	// reprezentującym właściwy generator - tak jak poniżej:
	cout << "Test generatora: " << normal(engine) << "\n\n";

	// tworzenie histogramu opisującego funkcję gęstości 
	// dla rozkładu normalnego - tzw. krzywa dzwonowa
	map<int, int> hist1;
	for(int n=0; n<100000; ++n)
		++hist1[round(normal(engine))];

	// funktor do generowania liczb całkowitych losowych 
	// z rozkładu równomiernego <0,9>; 
	uniform_int_distribution<int> uni(0, 9);

	// tworzenie histogramu opisującego funkcję gęstości 
	// dla rozkładu równomiernego
	map<int, int> hist2;
	for(int n=0; n<100000; ++n)
		++hist2[uni(engine)];

	// wizualizacja krzywej dla rozkładu normalnego 
	// (grafika w oknie konsoli!)
	// Uwaga: pętla 'for' oparta na zakresie jednak 
	// nie jest obsługiwana w VS2010, dlatego nie można 
	// tu napisać: "for (auto p1 : hist1) {". Przepraszam.
	for_each(hist1.begin(), hist1.end(), 
		[](pair<int,int> p) {
			cout << fixed << setprecision(1) << setw(2)
			<< p.first << ' ' << string(p.second/200, '*') << '\n';});

	// wizualizacja krzywej dla rozkładu równomiernego 
	// (grafika w oknie konsoli!)
	for_each(hist2.begin(), hist2.end(), 
		[](pair<int,int> p) {
			cout << fixed << setprecision(1) << setw(2)
			<< p.first << ' ' << string(p.second/200, '*') << '\n';});

	system("pause");
	return 0;
}