Napisz funkcję bin2int, która jako argument przyjmuje wskaźnik do tablicy znaków (np. char* t) przechowujących liczbę zapisaną w postaci binarnej w taki sposób, że pierwszym znakiem musi być zawsze '1′, tj. np. 1001, 100, 10101111, 1110010, itp., i która zwróci wartość typu int odpowiadającą podanej liczbie binarnej (np. dla 1001 będzie to wartość 9). Czytaj dalej
PO2026: Wejściówka Lab.4
Napisz program, który będzie wczytywał dane z jednego pliku tekstowego i zmienione zapisywał do drugiego. W tym celu:
- Zadeklaruj strukturalny typ danych
struct parazdefiniowany tak, że zmienna takiego typu może przechowywać dwie wartości: napis oraz liczbę. W funkcjimainzadeklaruj lokalną tablicę o długości 5, zawierającą elementy typustruct para. - Napisz funkcję
wiersz, która będzie odczytywała dane z wiersza w otwartym pliku. W wierszu zapisane są kolejno: nr indeksu studenta, nazwisko i ocena. Funkcja odczytuje dane z jednego wiersza, następnie ignoruje odczytany nr indeksu a do komórki tablicy wpisuje w odpowiednich polach tylko nazwisko i ocenę. Przyjmij, że w pliku może być dowolna liczba wierszy (jest możliwe również, że plik jest pusty), ale nie większa niż rozmiar tablicy. Przyjmij też, że dane w pliku są zawsze poprawne, tj. wiersz zawsze zawiera trójkę prawidłowych napisów w tej samej kolejności: numer, nazwisko i ocena. Nagłówek funkcji ma wyglądać tak:int wiersz(FILE* f, struct para *p)gdziefto wskaźnik do otwartego pliku, natomiastpto wskaźnik do komórki tablicy, do której mają zostać zapisane dane z jednego odczytanego wiersza pliku. Funkcja zwraca wartość zero, jeżeli odczyt zakończył się pomyślnie, a wartość 1, jeżeli nie udało się odczytać kolejnej porcji danych ze względu na koniec pliku. - W funkcji
mainpobierz od użytkownika nazwę pliku z danymi oraz nazwę pliku wyjściowego. Otwórz plik z danymi w trybie do odczytu, a plik wynikowy w trybie do zapisu. Następnie w pętli za pomocą funkcjiwierszodczytaj kolejne wiersze pliku zapisując dane w kolejnych komórkach tablicy. Każdą odczytaną komórkę tablicy zapisz od razu do pliku wynikowego tak, aby w kolejnych wierszach pliku znalazły się pary: nazwisko i ocena. Uwaga: nazwisko należy zapisać do pliku w postaci zaszyfrowanej, tj. należy zastąpić wszystkie samogłoski znakiem '*’. Jeżeli nie wszystkie komórki tablicy zostały zapełnione danymi, zapisz do pliku tylko tyle, ile zostało odczytanych z pliku wejściowego. Po zakończeniu pętli zamknij pliki, wyświetl w oknie konsoli zawartość tablicy i zakończ działanie funkcjimain. - Przygotuj sobie odpowiedni plik tekstowy z prawidłowymi danymi w kilku wierszach i umieść go we właściwym folderze. Następnie przetestuj program.
Do obsługi plików wykorzystaj funkcje: fopen, fclose, fprintf, fscanf i feof. Wszystkie z biblioteki: stdio.h.
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 4”.
Różne przykłady zadań i problemów dotyczących działań na plikach można znaleźć w zbiorze zadań „Zadania z programowania w języku C/C++, cz. I, Jacek Krzaczkowski”, Rozdział 8, „Operacje na plikach”, który jest dostępny na moodle w kursie „PO – wykład”. Dobre słowa kluczowe dla wyszukiwarki na najbliższy tydzień to: fopen, fclose, fprintf, fscanf i feof w połączeniu z ansi c. Oczywiście niczego nie należy brać bezkrytycznie, każdy kawałek kodu warto zweryfikować wklejając do okna VC++ i sprawdzając, jak naprawdę działa.
Hint:
Przygotowując się na lab. nr 4 warto przypomnieć sobie jak skonstruowany jest C-napis, sprawdzić jak działa szyfr Cezara, oraz zapoznać się z funkcjami:
int isalpha(int c)int islower(int c)int isupper(int c)int tolower(int c)int toupper(int c)
Funkcje znajdują się w bibliotece ctype.h i służą do sprawdzania, czy dany znak jest literą i jakiego rodzaju (dużą czy małą) oraz do zamiany dużych liter na małe i małych na duże. Zadania pierwszego poziomu na lab. 4 mogą mieć wspólne fragmenty z zadaniami poziomu 2 lab. nr 3, tj. będą dotyczyły konwertowania napisów do postaci zaszyfrowanych wg różnych reguł, oraz oczywiście będą dotyczyły pracy na plikach tekstowych (materiał ostatnio omawiany na wykładzie).
ZTP2025: Wyniki egzaminu – termin drugi
Wiersze zawierają: trzy ostatnie cyfry nr indeksu, liczbę zdobytych punktów i proponowaną ocenę.
- ***137 14.5 3
- ***364 18 4
- ***473 13.5 3
- ***671 15.5 3.5
- ***674 16 3.5
Osoby zainteresowane wglądem w prace proszę o kontakt mailowy.
PO2026: Wejściówka Lab.3
Zadeklaruj strukturalny typ danych, który będzie zawierał dwa pola: napis oraz liczba całkowita. W funkcji main zadeklaruj lokalną tablicę o niewielkiej długości (np. 5), zawierającą elementy typu takiego, jak zdefiniowana wcześniej struktura. Czytaj dalej
ALIN2025: Egzamin, termin II
Informuję, że egzamin ALIN, termin II odbędzie się 4 marca, w środę, o godz. 11:00 w sali 116, bud. 21 (w jednej auli razem z egzaminem „Zaawansowane techniki programowania”).
ZTP2026: Wgląd w prace egzaminacyjne
Wgląd w prace egzaminacyjne z pierwszego drugiego terminu egzaminu będzie możliwy w poniedziałek, 2.03, w godz. od 15:30 do 16:00 (lub dłużej, jeżeli będą zainteresowani, ale nie dłużej niż do godz. 17:00) w pok. 1247 bud. 12.
PO2026: Wejściówka 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. Czytaj dalej
PO2026: Zasady uczestnictwa oraz regulaminy 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 zgłosił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.
Ważne: odnośniki do stron www z pełnymi zasadami zaliczenia zajęć lab. oraz z regulaminami są poniżej. Należy koniecznie zapoznać się z tymi informacjami przed rozpoczęciem pierwszych zajęć.
- Zasady zaliczenia lab.: https://ktrojanowski.blog.uksw.edu.pl/programowanie-obiektowe/zasady-zaliczenia-lab/
- Regulamin dla zajęć lab.: https://ktrojanowski.blog.uksw.edu.pl/programowanie-obiektowe/zasady-zaliczenia-lab/zasady-dla-zadan-lab/
- Regulamin 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/
ZTP2025: Wyniki egzaminu – termin pierwszy
Wiersze zawierają: trzy ostatnie cyfry nr indeksu, liczbę zdobytych punktów i proponowaną ocenę.
- ***132 15.5 3.5
- ***137 1 2
- ***255 16 3.5
- ***259 18 4
- ***290 21 4.5
- ***305 16 3.5
- ***308 13.5 3
- ***322 23 5
- ***473 5.5 2
- ***481 17.5 4
- ***671 1 2
- ***674 8.5 2
W razie niejasności, proszę o kontakt mailowy.
ALIN2025: Zmiana godziny egzaminu AIN, termin I
Informuję o zmianie godziny I terminu egzaminu ALIN. Dla osób, które mają ocenę pozytywną z zajęć lab., a nie uzyskały oceny pozytywnej na egzaminie zerowym, egzamin odbędzie się 6 lutego, w piątek, o godz. 11:00 w sali 114, bud. 21 (w jednej auli razem z egzaminem „Zaawansowane techniki programowania”).
