Za zgodą Dziekana WMP.SNŚ w najbliższy czwartek, 14 grudnia, wykład ZTP od godz. 16:45 do 18:15 odbędzie się w trybie zdalnym na platformie MS Teams. Aby uczestniczyć w wykładzie należy dołączyć do zespołu WM-I-S1-E3-ZTP_2023/24_Z_WYK_GR1 korzystając z kodu: yv04q5s
Archiwa autora: k.trojanowski
ZTP2023: Zadania przed lab.6
Zadania, które dotyczą zakresu materiału, jaki będzie poruszany na lab. 6. Rozwiązanie nie jest wymagane. Zadania stanowią wyłącznie pomoc w przygotowaniu się do zajęć.
Zadanie #1:
Przyjmij, że A, B, C i D reprezentują punkty w przestrzeni n-wymiarowej. Punkty te są reprezentowane w programie przez wektory współrzędnych. Wektor A zawiera dla każdej współrzędnej uzyskaną niezależnie wartość losową z generatora liczb o rozkładzie jednostajnym z przedziału [-10,10]. Wektor B zawiera wartości stałe [1,..,1].
Pobierz od użytkownika liczbę wymiarów przestrzeni n, utwórz odpowiednich rozmiarów wektory, przy czym zainicjuj też odpowiednio A i B, a następnie napisz kod wykonujący kolejno następujące obliczenia:
- D = A*B
- C = 3*B + D
- D = 3*(A+C)-(A*B)
gdzie operator '*’ oznacza mnożenie, przy czym kiedy argumentami są skalar i wektor, następuje przemnożenie wszystkich współrzędnych wektora przez skalar, natomiast w przypadku, kiedy argumentami są dwa wektory, jest to iloczyn Hadamarda (zobacz: https://pl.wikipedia.org/wiki/Mnożenie_macierzy). Sprawdź na danych testowych, czy obliczenia wykonują się poprawnie.
Uwaga – ograniczenie: do zaimplementowania w/w operacji nie wykorzystuj żadnych pętli (for, while, repeat
), a wyłącznie algorytmy STL i obiekty funkcyjne (własne lub biblioteczne). Jeżeli to potrzebne, rozłóż operacje na pojedyncze kroki, których wynik zapamiętuj w wektorach pomocniczych.
Zadanie #2:
W celu wygenerowania punktu na powierzchni hipersfery (zobacz: https://pl.wikipedia.org/wiki/Hipersfera) z centrum w środku układu współrzędnych należy wykonać następujące kroki:
- wygenerować wektor Z, którego każda współrzędna jest uzyskaną niezależnie wartością losową z generatora liczb o rozkładzie normalnym. Liczba współrzędnych wektora odpowiada liczbie wymiarów przestrzeni, w której definiowana jest hipersfera,
- policzyć ||Z||, tj. długość wektora Z, a następnie podzielić każdą ze współrzędnych wektora Z przez tę długość.
Nowy wektor Z reprezentuje punkt na powierzchni hipersfery o promieniu 1 z centrum w środku układu współrzędnych.
Wygeneruj wiele takich punktów dla przestrzeni 2-wymiarowej i przedstaw je w postaci graficznej. Sprawdź, czy układają się w kształt okręgu.
Uwaga – ograniczenie: do zaimplementowania w/w operacji nie wykorzystuj żadnych pętli (for, while, repeat
), a wyłącznie algorytmy STL i obiekty funkcyjne (własne lub biblioteczne). Jeżeli to potrzebne, rozłóż operacje na pojedyncze kroki, których wynik zapamiętuj w wektorach pomocniczych.
ZTP2023: Zadania przed lab.5
Zadania, które dotyczą zakresu materiału, jaki będzie poruszany na lab. 5. Rozwiązanie tych zadań nie jest wymagane. Stanowią wyłącznie pomoc w przygotowaniu się do zajęć.
Zadanie 1:
Napisz funkcję, która wczytuje macierz z pliku tekstowego zapisaną tak, że w kolejnych wierszach pliku są wartości komórek kolejnych wierszy macierzy rozdzielone spacjami, a następnie dokonuje jej transpozycji. Przyjmij, że wymiary wczytywanej macierzy są nieznane, ale że dane w pliku są na pewno poprawne (tj. wiersze przechowują tylko liczby, liczby liczb w wierszach są takie same, itp.). Do wczytania macierzy użyj kontenera typu <deque<deque<double>>
. Funkcja zwraca transponowaną macierz w postaci wskaźnika do dynamicznie alokowanego kontenera typu vector<vector<double>>
. Wypisz w oknie konsoli zawartość wynikowego kontenera i sprawdź, czy transpozycja została przeprowadzona poprawnie.
Zadanie 2:
Wczytaj słowa z kolejnych wierszy z pliku tekstowego do listy list, tj. kontenera typu list<list<string>>
, tak aby kontener zawierał listę wierszy, gdzie każdy wiersz jest reprezentowany przez listę słów z tego wiersza. Posortuj rosnąco słowa z każdego wiersza wg zasady sortowania takiej jak w słowniku języka polskiego, a następnie scal posortowane listy słów do jednej listy wynikowej reprezentowanej przez inny kontener typu list<string>
. Wypisz w oknie konsoli zawartość wynikowego kontenera w postaci kolumny i upewnij się, że sortowanie i scalanie się powiodło. Testy przeprowadź na pliku mistrz.txt
ZTP2023: Zadanie przed lab.4
Zadanie, które dotyczy zakresu materiału, jaki będzie poruszany na lab. 4. Rozwiązanie tego zadania nie jest wymagane. Stanowi wyłącznie pomoc w przygotowaniu się do zajęć.
Zamieszczony poniżej kod programu reprezentuje przykład programowania z wykorzystaniem cech charakterystycznych. W programie wykorzystywane są dwie klasy reprezentujące dwa pojęcia:
temperatura_wody
– liczba rzeczywista reprezentująca temperaturę wodykostka_do_gry
– liczba całkowita reprezentująca wartość, jaka może wypaść w wyniku rzutu kostką do gry.
Dla tych klas zdefiniowano ich cechy charakterystyczne. Są nimi:
- _jest_liczba – cecha mówiąca, czy danych obiekt reprezentuje liczbę,
- _jest_liczba_calkowita – cecha mówiąca, czy liczba którą reprezentuje danych obiekt, jest liczbą całkowitą,
- _nalezy_do_przedzialu – cecha mówiąca, czy liczba którą reprezentuje danych obiekt, należy do przedziału,
- _dolna_granica_przedzialu – wartość dolnej granicy przedziału, do którego mogą należeć liczby reprezentowane przez danych obiekt,
- _gorna_granica_przedzialu – wartość górnej granicy przedziału, do którego mogą należeć liczby reprezentowane przez danych obiekt,
Cechy charakterystyczne zostały zaimplementowane w programie. W tym celu najpierw zostały zaimplementowane dwie klasy: Bazowe_Cechy
oraz Cechy: public Bazowe_Cechy
tworzące pojęcie zbioru cech.
Następnie dla każdej z dwóch klas: temperatura_wody
i kostka_do_gry
zostały skonkretyzowane w odpowiedni sposób przypisane im klasy cech:
Cechy<temperatura_wody>: public Bazowe_Cechy
Cechy<kostka_do_gry>: public Bazowe_Cechy
Działanie programu polega na gromadzeniu danych liczbowych różnych typów w kontenerach, przy czym kontenery do walidacji wprowadzanych danych używają cech charakterystycznych. W tym celu zdefiniowana została klasa reprezentująca kontener SzablonStosu
przystosowany do przechowywania dowolnych wartości, w tym obiektów typu temperatura_wody
i kostka_do_gry
. Metoda push
tego kontenera przed umieszczeniem danej dokonuje jej walidacji posługując się informacjami z klasy Bazowe_Cechy
.
Wykorzystanie kontenera zostało zademonstrowane w funkcji main
. W kodzie main
tworzone są trzy kontenery K1, K2 i K3, a następnie są wypełniane wartościami. Uwaga: kontener K1 jest zapełniany wartościami tak długo, póki wystarczy zasobów komputera (w trakcie wykonania programu warto uruchomić menedżer zadań i w sekcji wydajności obserwować, jak ubywa wolnej pamięci w miarę pracy programu).
Zadania do zrobienia przed ćwiczeniami
- Przenieś kod do środowiska VS C++, skompiluj i uruchom.
- Przeanalizuj kod, upewnij się, że rozumiesz rolę wszystkich pól i metod w klasach i potrafisz to wyjaśnić na zajęciach.
- Upewnij się, że potrafisz wyjaśnić, dlaczego tyle właśnie elementów zostaje umieszczonych w każdym z trzech kontenerów (a nie więcej).
- dodaj do kodu jeszcze jedną klasę reprezentującą pojęcie liczbowe „numer kołnierzyka koszuli” i skonkretyzuj w odpowiedni sposób odpowiadającą jej klasę cech. Następnie, jeżeli to konieczne, rozszerz kod metody
push
tak aby poprawnie walidował obiekty nowego typu. W funkcjimain
dodaj kontener K4 w którym zgromadzisz kilka obiektów nowego typu. - Przygotuj się do rozwijania tego kodu dla potrzeb nowych rodzajów wartości, jakie można przechowywać w tym kontenerze.
Pliki do pobrania
Plik programu: ZPO-traits.cpp
Plik z danymi wejściowymi: qv-lab4 (po założeniu nowego projektu VC++ należy go umieścić w tym samym folderze, co plik z kodem programu).
/* ==========================
(c) WMP.SNS UKSW, 2015
========================== */
#include<iostream>
#include<fstream>
#include<string>
#include<limits>
#include<exception>
using namespace std;
class _Bazowe_Cechy {
public:
// pola statyczne stałe - dla stałych wartości całkowitych
static const bool _jest_liczba = false;
static const bool _nalezy_do_przedzialu = false;
static const bool _jest_liczba_calkowita = false;
};
template<typename T>
class _Cechy : public _Bazowe_Cechy {
public:
// metody statyczne - dla wartości innych typów niż liczby całkowite
static const T _dolna_granica() { return T(); };
static const T _gorna_granica() { return T(); };
};
template<typename T>
class Cechy : public _Cechy<T> {
};
class przyspieszenie {
double a;
public:
przyspieszenie(double acc = 0) : a(acc) {};
double operator()() const { return a; };
przyspieszenie& operator=(double acc) { a = acc; return *this; };
bool operator<(const przyspieszenie& p) const { return (a < p.a); };
friend ostream& operator<<(ostream& os, const przyspieszenie&);
};
ostream& operator<<(ostream& os, const przyspieszenie& p) { return os << p.a; };
template<>
class Cechy<przyspieszenie> : public _Cechy<przyspieszenie> {
public:
static const bool _jest_liczba = true;
};
class temperatura_wody {
double t;
public:
temperatura_wody(double temp = 50) : t(temp) {};
double operator()() const { return t; };
temperatura_wody& operator=(double temp) { t = temp; return *this; };
bool operator<(const temperatura_wody& tw) const { return (t < tw.t); };
friend ostream& operator<<(ostream& os, const temperatura_wody&);
};
ostream& operator<<(ostream& os, const temperatura_wody& tw) { return os << tw.t; };
template<>
class Cechy<temperatura_wody> : public _Cechy<temperatura_wody> {
public:
static const bool _jest_liczba = true;
static const bool _nalezy_do_przedzialu = true;
static const temperatura_wody _dolna_granica() { return temperatura_wody(0); };
static const temperatura_wody _gorna_granica() { return temperatura_wody(100); };
};
class kostka_do_gry {
int n;
public:
kostka_do_gry(int num = 1) : n(num) {};
int operator()() const { return n; };
kostka_do_gry& operator=(int num) { n = num; return *this; };
bool operator<(const kostka_do_gry& k) const { return (n < k.n); };
friend ostream& operator<<(ostream& os, const kostka_do_gry&);
};
ostream& operator<<(ostream& os, const kostka_do_gry& k) { return os << k.n; };
template<>
class Cechy<kostka_do_gry> : public _Cechy<kostka_do_gry> {
public:
static const bool _jest_liczba = true;
static const bool _nalezy_do_przedzialu = true;
static const bool _jest_liczba_calkowita = true;
static const kostka_do_gry _dolna_granica() { return kostka_do_gry(1); };
static const kostka_do_gry _gorna_granica() { return kostka_do_gry(6); };
};
class Przepelnienie : public exception {
char opis[100];
public:
Przepelnienie(const char* o) { strcpy_s(opis, o); }
const char* what() const throw() { return opis; };
};
class BrakDanych : public exception {
char opis[100];
public:
BrakDanych(const char* o) { strcpy_s(opis, o); }
const char* what() const throw() { return opis; };
};
template<typename T, int rozmiar, typename CechyT = Cechy<T>>
class SzablonStosu{
T stos[rozmiar];
int top;
public:
int zajetosc() { return top; };
SzablonStosu() : top(0) {}
void push(const T& i) {
if (top == rozmiar)
throw Przepelnienie(typeid(i).name());
stos[top++] = i;
}
void push(int i) {
if (top == rozmiar)
throw Przepelnienie(typeid(i).name());
// walidacja wartości przekazanej do zapisu
if (CechyT::_jest_liczba && CechyT::_jest_liczba_calkowita) {
if (CechyT::_nalezy_do_przedzialu) {
if (!(T(i) < CechyT::_dolna_granica()) && !(CechyT::_gorna_granica() < T(i)))
stos[top++] = i;
}
else
stos[top++] = i;
}
}
void push(double i) {
if (top == rozmiar)
throw Przepelnienie(typeid(i).name());
// walidacja wartości przekazanej do zapisu
if (CechyT::_jest_liczba && !CechyT::_jest_liczba_calkowita) {
if (CechyT::_nalezy_do_przedzialu) {
if (!(T(i) < CechyT::_dolna_granica()) && !(CechyT::_gorna_granica() < T(i)))
stos[top++] = i;
}
else
stos[top++] = i;
}
}
T pop() {
if (top == 0)
throw BrakDanych(typeid(stos[0]).name());
return stos[--top];
}
template<typename U1, int r, typename U2>
friend ostream& operator<<(ostream& os, const SzablonStosu<U1, r, U2>&);
};
template<typename U1, int r, typename U2>
ostream& operator<<(ostream& os, const SzablonStosu<U1, r, U2>& S)
{
for (int i = 0; i < S.top; i++) cout << S.stos[i] << endl;
return os;
};
int main() {
SzablonStosu<string, 5> K1;
SzablonStosu<przyspieszenie, 10> K2;
SzablonStosu<temperatura_wody, 10> K3;
SzablonStosu<kostka_do_gry, 10> K4;
// zapełnianie stosów K1, K2, K3 i K4:
ifstream fi("qv-lab4.txt");
string s;
try{
K1.push("Henryk");
K1.push("Sienkiewicz");
while (fi) {
fi >> s;
K1.push(s);
fi.seekg(ios::beg);
fi.clear();
cout << '*';
};
}
catch (Przepelnienie& e){
cout << "K1 gotowy: " << e.what() << endl;
};
cout << "Danych na stosie K1: " << K1.zajetosc() << endl << endl;
K2.push(przyspieszenie());
K2.push(przyspieszenie(5.0));
K2.push(10); // uwaga: nie akceptujemy przyspieszenia jako liczby całkowitej
K2.push(10.0);
cout << K2;
cout << "Danych na stosie K2: " << K2.zajetosc() << endl << endl;
K3.push(temperatura_wody());
K3.push(temperatura_wody(36.6));
K3.push(71.2);
K3.push(112.1); // uwaga: nie akceptujemy wartości spoza przedziału
cout << K3;
cout << "Danych na stosie K3: " << K3.zajetosc() << endl << endl;
K4.push(kostka_do_gry(3));
K4.push(kostka_do_gry());
K4.push(6);
K4.push(10); // uwaga: nie akceptujemy wartości spoza przedziału
cout << K4;
cout << "Danych na stosie K4: " << K4.zajetosc() << endl << endl;
// opróżnianie stosów
try{
while (true)
K1.pop();
}
catch (BrakDanych& e) {
cout << "K1 pusty: " << e.what() << endl;
}
try{
while (true)
K2.pop();
}
catch (BrakDanych& e) {
cout << "K2 pusty: " << e.what() << endl;
}
try{
while (true)
K3.pop();
}
catch (BrakDanych& e) {
cout << "K3 pusty: " << e.what() << endl;
}
try {
while (true)
K4.pop();
}
catch (BrakDanych& e) {
cout << "K4 pusty: " << e.what() << endl;
}
system("pause");
return 0;
}
ZTP2023: Wskazówki przed lab. 1
Zasady ogólne
Zasady wykonywania i oceniania programów na stacjonarnych zajęciach lab.:
- Każdy uczestnik wykonuje na komputerze w pracowni dwa zadania w środowisku MS Visual Studio: podstawowe (pierwszego poziomu) za 6 pkt. i dodatkowe (drugiego poziomu) za 4 pkt.
- Zadań nie wolno realizować na własnym laptopie.
- Dopiero kiedy prowadzący odbierze i pozytywnie oceni zadanie podstawowe, można zacząć rozwiązywać zadanie dodatkowe (dodatkowe bywa łatwiejsze).
- Studenci mogą realizować swoje zadania tylko na zajęciach – nie ma możliwości kończenia programu poza pracownią i przesyłania go do oceny w godzinach wieczornych czy następnego dnia.
- Studenci obowiązkowo uploadują do moodle rozwiązane zadania I i II poziomu w trakcie zajęć. Rozwiązania uploadowane po zajęciach nie będą oceniane.
Pełny opis zasad jest zamieszczony w moodle.
Rozwiązania będą weryfikowane za pomocą oprogramowania antyplagiatowego MOSS (tak samo jak w ubiegłym semestrze), dlatego oceny wystawione na zajęciach mogą jeszcze być później korygowane na podstawie wyników raportu MOSS (zbytnie podobieństwo kodu powoduje obniżenie oceny u wszystkich wskazanych w raporcie, tj. bez ustalania, kto był rzeczywistym autorem, a kto popełnił plagiat).
Porady przed lab. 1
Zadania realizowane na pierwszych zajęciach lab. będą dotyczyły materiału z pierwszego wykładu ZTP i wykładów PO z poprzedniego semestru. Dlatego proszę Państwa o przejrzenie materiału z poprzedniego semestru, a zwłaszcza dwóch ostatnich wykładów (strumienie).
PO2023: Wyniki egzaminu – termin drugi, 21.09
Wiersze zawierają: trzy ostatnie cyfry z nr indeksu, liczbę punktów za część teoretyczną, liczbę punktów za część praktyczną, całkowitą liczbę zdobytych punktów i ocenę.
- ***050 6.5 1 7.5 2
- ***172 17.7 13 30.7 4
- ***268 16.5 3.5 20 + ε 3
- ***468 13.5 8 21.5 3
- ***475 6.5 0 6.5 2
- ***476 7 1 8 2
- ***478 3.5 0 3.5 2
- ***489 4.5 0 4.5 2
- ***497 23 11 34 4.5
- ***501 2.5 0 2.5 2
- ***512 15.5 13 28.5 4
- ***526 3 0 3 2
- ***531 12 0 12 2
- ***536 8 0 8 2
- ***545 5.5 0 5.5 2
- ***563 9.5 0 9.5 2
- ***578 15 1 16 2
- ***658 7.5 6 13.5 2
- ***986 16 9 25 3.5
Wgląd w prace egzaminacyjne będzie możliwy we czwartek, 28.09, w godz. od 14:00 do 14:30 16:00 do 16:30 (lub dłużej, aż do ostatniego zainteresowanego) w pok. 1247 bud. 12.
W razie niejasności proszę o kontakt mailowy.
PO2023: Poprawa lab. i egzamin w sesji wrześniowej – terminy i zasady
Termin poprawy zajęć laboratoryjnych
20 września (środa), godz. 11:30, pracownia komputerowa 119, bud. 21. Czas trwania: około 4 godzin zegarowych.
II termin egzaminu
21 września (czwartek), godz. 13:00, sala 108, bud.21. Egzamin w drugim terminie ma formę i czas trwania identyczne jak w pierwszym.
Zasady udziału w poprawie zajęć laboratoryjnych
Zgodnie z regulaminem zaliczeń przedmiotów, studenci, którzy na laboratorium nie zdobyli wystarczającej liczby punktów i otrzymali ocenę negatywną, mają prawo do poprawy tej oceny. Ci, którzy zamierzają uczestniczyć w poprawie, muszą jednak najpierw otrzymać ocenę pozytywną z zadania semestralnego. Rozwiązania zadań semestralnych (zzipowany komplet plików, spełniających wszystkie formalne wymagania) studenci przekazują do oceny swoim prowadzącym zajęcia. Jeżeli ktoś w czerwcu pozytywnie rozliczył swoje zadanie semestralne, to jest już dopuszczony do poprawy. Takie osoby mogą teraz przypomnieć o pozytywnym zaliczeniu zadania swoim prowadzącym, ponieważ przed poprawą będę prosił prowadzących o przesłanie do mnie list osób, które otrzymały oceny pozytywne za zadanie semestralne. Tylko osoby, które będą na tych listach, zostaną dopuszczone do poprawy.
Studenci przekazują do swoich prowadzących rozwiązania zadań semestralnych do oceny według zasad i zgodnie z terminami ustalonymi przez tych prowadzących. Studenci z mojej grupy, którzy chcą przystąpić do poprawy, a nie mają jeszcze zaliczonego zadania semestralnego, przesyłają mi je do oceny w postaci załącznika do maila w terminie od 11 do 18 września (poniedziałek) rano. Prace przesłane później mogą nie zostać ocenione, a prace przesłane wcześniej mogą niechcący zostać przeoczone. Mail z odpowiedzią/oceną zostanie wysłany zwrotnie, tj. na adres mailowy, z którego nadesłano rozwiązanie. Wszystkie oceny za zadania semestralne muszą zostać wystawione do 20 września (środa), rano.
Zgłoszenie udziału w poprawie zajęć laboratoryjnych
Osoby, które chcą i mogą przystąpić do poprawy, przysyłają do mnie mailem swoje zgłoszenie udziału w poprawie (wystarczy jedno zdanie typu „zgłaszam swój udział w …”, a poniżej imię, nazwisko i nr indeksu). Zgłoszenie należy wysłać w terminie od 11 (poniedziałek) do 19 września (wtorek), do końca dnia. Proszę nie przysyłać zgłoszeń wcześniej, bo mogą zostać przeze mnie niechcący przeoczone. Brak przesłania w terminie zgłoszenia udziału spowoduje, że nie zostanie przygotowane zadanie dla danej osoby i tym samym uniemożliwi jej udział w poprawie. Uwaga: jeżeli żadne zgłoszenia nie zostaną przesłane w terminie, poprawa zostanie odwołana.
PO2023: Wyniki egzaminu – termin pierwszy, 23.06
Wiersze zawierają: trzy ostatnie cyfry z nr indeksu, liczbę punktów za część teoretyczną, liczbę punktów za część praktyczną, całkowitą liczbę zdobytych punktów i ocenę.
- ***050 5 8.0 13.0 2
- ***065 12.5 14.0 26.5 3.5
- ***172 11 5.0 16.0 2
- ***235 15.5 8.0 23.5 3
- ***246 19.5 16.0 35.5 4.5
- ***261 18 13.5 31.5 4
- ***268 10 6.0 16.0 2
- ***360 14.5 5.5 20.0 + ε 3
- ***466 18 4.0 22.0 3
- ***468 8 6.0 14.0 2
- ***473 2.5 0.0 2.5 2
- ***475 8 5.0 13.0 2
- ***476 4.5 2.0 6.5 2
- ***478 0.5 0.0 0.5 2
- ***479 22 5.0 27.0 3.5
- ***487 15.5 5.0 20.5 3
- ***511 11.5 8.5 20.0 + ε 3
- ***512 12 6.0 18.0 2
- ***531 7.5 0.5 8.0 2
- ***533 16.5 5.0 21.5 3
- ***536 10 4.0 14.0 2
- ***545 9 0.0 9.0 2
- ***548 20 8.0 28.0 4
- ***560 11.5 11.0 22.5 3
- ***578 6.5 0.5 7.0 2
- ***589 20.5 3.0 23.5 3
- ***594 18.5 5.5 24.0 3.5
- ***621 13.5 6.5 20.0 + ε 3
- ***807 14.5 5.5 20.0 + ε 3
- ***851 17.5 10.5 28.0 4
- ***986 14 5.0 19.0 2
Wgląd w prace egzaminacyjne będzie możliwy we wtorek, 27.06, w godz. od 14:00 do 14:30 (lub dłużej, aż do ostatniego zainteresowanego) w pok. 1247 bud. 12.
W razie niejasności proszę o kontakt mailowy
PO2023: Wyniki z egzaminu zerowego
Lista osób, które otrzymały ocenę pozytywną z zajęć lab. ale nie zostały zwolnione z egzaminu i osiągnęły co najmniej 50% pkt. na egzaminie zerowym. Wiersze zawierają: trzy ostatnie cyfry nr indeksu, liczbę zdobytych punktów i proponowaną ocenę.
- ***225 22.0 4
- ***229 19.0 3.5
- ***238 18.0 3.5
- ***245 21.5 4
- ***263 18.5 3.5
- ***271 15.0 3
- ***272 17.5 3.5
- ***384 25.0 4.5
- ***534 19.0 3.5
- ***543 18.0 3.5
- ***553 19.5 3.5
- ***560 15.5 3
- ***561 21.0 4
- ***577 21.5 4
- ***579 17.0 3.5
- ***585 20.0 4
- ***637 18.0 3.5
- ***659 25.5 5
- ***677 14.0 + ε 3
- ***729 19.5 3.5
- ***810 17.5 3.5
- ***980 17.0 3.5
Lista osób, które uczestniczyły w egzaminie zerowym, ale liczba zdobytych na egzaminie punktów nie przekroczyła progowej wartości 50% możliwych do zdobycia. Wiersze zawierają trzy ostatnie cyfry nr indeksu.
- ***050
- ***172
- ***235
- ***261
- ***466
- ***468
- ***473
- ***475
- ***476
- ***478
- ***479
- ***487
- ***511
- ***512
- ***526
- ***531
- ***533
- ***536
- ***545
- ***589
- ***594
- ***851
- ***986
Wgląd do pracy egzaminacyjnej będzie możliwy w poniedziałek, 19 czerwca, w godz. od 13:00 do 13:30 (lub dłużej, aż do ostatniego zainteresowanego) w pok. 1247 bud. 12.
W razie niejasności, proszę o kontakt mailowy.
PO2023: Lista osób zwolnionych z egzaminu
Lista zawiera trzy ostatnie cyfry numeru indeksu osób zwolnionych z egzaminu za bardzo dobre wyniki na zajęciach lab. oraz proponowaną ocenę.
- ***293 5
- ***295 5
- ***378 4.5
- ***467 4.5
- ***614 4.5
- ***627 5
- ***867 5
Osoby te z egzaminu z wykładu otrzymują ocenę taką, jaką otrzymały z zajęć lab. tj. 5 (bardzo dobry) albo 4.5 (dobry plus), która zostanie wpisana do protokołu USOS jako ocena zdobyta w pierwszym terminie.
W razie niejasności proszę o kontakt mailowy.