PO2023: Wejściówka na Lab.2

Napisz program szyfrujący tekst wprowadzany przez użytkownika. W tym celu przygotuj tablicę dwuwymiarową A o wymiarze 5 na 5 przechowującą wartości typu char, oraz tablicę jednowymiarową B, przechowującą wskaźniki do zmiennych typu char. Do tablicy B wpisz wartości NULL, a do tablicy A wpisz litery alfabetu (z pominięciem liter zawierających znaki diakrytyczne: ą, ć, ę, ł, ń, ó, ś, ź, ż), np. tak:

a f k p v
b g l r w
c h m s x
d i n t y
e j o u z

Następnie wczytaj od użytkownika ciąg znaków bez spacji, reprezentujący dowolny napis składający się tylko ze znaków z tablicy A, którego długość nie jest większa niż długość tablicy jednowymiarowej B. Zakładamy przy tym, że dane wprowadzane przez użytkownika są zawsze poprawne co do ich wartości i rozmiaru. Napis wczytaj poleceniem scanf do pomocniczej tablicy. Następnie dla każdej kolejnej litery wczytanego napisu znajdź w tablicy A komórkę, przechowującą tę literę, po czym adres znalezionej komórki w A zapisz w kolejnej komórce tablicy B. Po zakończeniu tablica B powinna zawierać wskaźniki do odpowiednich komórek tablicy A z kolejnymi literami wprowadzonego napisu. Jeżeli długość tablicy B jest większa niż długość wczytanego słowa, pozostałe komórki tablicy B przechowują wartość NULL.

Wypisz w oknie konsoli napis podany przez użytkownika korzystając tylko z tablicy B, tj. za pomocą wskaźników z B sięgaj do odpowiednich komórek w A i wypisz ich zawartość kolejno na ekranie.

Następnie zaszyfruj napis poprzez przestawienie wartości w wierszach tablicy A. Przykładowe przestawienie to przesunięcia wartości: z wiersza 1 do 2, z 2 do 3, z 3 do 4, z 4 do 5, a z 5 do 1, np. tak:

e j o u z
a f k p v
b g l r w
c h m s x
d i n t y

Po przestawieniu wierszy ponownie wypisz w oknie konsoli napis korzystając ze wskaźników z tabeli B.

Na koniec przywróć w tablicy właściwy porządek wierszy i jeszcze raz korzystając z tablicy B wypisz napis, tym razem w postaci odszyfrowanej.

Przetestowany, działający program (tylko plik z kodem źródłowym) uploaduj do https://e.uksw.edu.pl jako rozwiązanie zadania „Wejściówka” w sekcji „Temat 2”, tak aby na początku zajęć można go było szybko pobrać, skompilować i zademonstrować działanie.

PO2023: zasady prowadzenia zajęć laboratoryjnych

Zasady obowiązujące na zajęciach:

Każdy uczestnik zajęć lab. wykonuje na komputerze w pracowni dwa zadania: 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 w domu 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ęć (moodle stanowi archiwum prac studentów). Po uploadowaniu koniecznie należy kliknąć „oddaj do oceny”.

W trakcie zajęć lab. obowiązuje całkowity zakaz korzystania z zasobów internetu. Używanie komunikatorów, korzystanie z wyszukiwarki sieciowej, sprawdzanie informacji na forach społecznościowych lub innych stronach poświęconych programowaniu w c/c++ skutkuje natychmiastowym opuszczeniem pracowni i oceną 0 pkt za realizowane zadanie.
Wyjątki:
http://www.cplusplus.com/
materiały z wykładu dostępne na platformie e-learningowej Moodle UKSW: https://e.uksw.edu.pl

Student może za to korzystać swobodnie z papierowych książek i notatek oraz wydruków. Jeżeli ktoś ma tablet z książkami w pdf’ie to ma obowiązek pokazać prowadzącemu, że na czas zajęć ma w nim wyłączony kontakt ze światem (WiFi).

Na zajęciach lab. prowadzący nie prezentuje żadnego mini-wykładu, a jedynie rozdaje i objaśnia zadania oraz odpowiada na konkretne pytania poszczególnych studentów dotyczące tworzonego kodu programu. Po wykonaniu zadania należy natychmiast zasygnalizować to prowadzącemu, który podejdzie i oceni wykonany program. Oceniony program należy uploadować do moodle. Osoby, które rozliczą pozytywnie obydwa zadania wcześniej, nie czekają w pracowni do zakończenia zajęć, ale opuszczają ją niezwłocznie po otrzymaniu oceny i wysłaniu programu do moodle. Zgłoszenie rozwiązania gotowego do oceny przez wiele osób na kilka minut przed końcem zajęć może skutkować brakiem możliwości oceny tych osób, które zrobiły to najpóźniej, a w rezultacie – końcowym wynikiem 0 pkt dla tych osób.

W okolicach 4. zajęć w semestrze rozdawane są studentom zadania semestralne. Nie ma jednak podziału zaliczenia semestru na dwie oceny – z zajęć lab. i z zadania semestralnego. W ostatnim dniu semestru wystawiana jest jedna łączna ocena. Strategie postępowania w rodzaju „w semestrze zaliczę laboratoria a przez wakacje zrobię zadanie semestralne” są nieakceptowane. Student musi wykonać zadanie semestralne w semestrze i albo zaliczy wszystko przed rozpoczęciem sesji letniej, albo otrzymuje ocenę negatywną z zajęć lab.

Strony www z zasadami zaliczenia zajęć lab. z PO:
https://ktrojanowski.blog.uksw.edu.pl/programowanie-obiektowe/zasady-zaliczenia-lab/
w tym:
Zasady dla zadań lab.:
https://ktrojanowski.blog.uksw.edu.pl/programowanie-obiektowe/zasady-zaliczenia-lab/zasady-dla-zadan-lab/
Zasady dla zadania sem.:
https://ktrojanowski.blog.uksw.edu.pl/programowanie-obiektowe/zasady-zaliczenia-lab/zasady-dla-zadania-sem/

Ostatnia deska ratunku dla tych, którzy nie zaliczyli zajęć lab. w semestrze:
https://ktrojanowski.blog.uksw.edu.pl/programowanie-obiektowe/zasady-zaliczenia-lab/wyjatek/