Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Zadanie 1. (łatwe)
- Plik wejściowy zawiera ciąg wierszy. W każdym wierszu znajdują się trzy liczby całkowite (o małych wartościach bezwzględnych), oddzielone od siebie dowolną liczbą spacji i znaków tabulacji \t. Napisać program obliczający dla każdego wiersza sumę liczb w nim zawartych i drukujący zestawienie tabelaryczne uzyskanych wyników w postaci: nagłówek SUMA dla ostatniej kolumny, w kolejnych wierszach, wyrównane w kolumnach do lewej składowe sumy i wartość sumy, oddzielone od siebie znakami | .
- Zatem dla danych:
- 1 5 18
- 13 2 -5
- powinniśmy uzyskać wynik:
- SUMA
- | 1 | 5 | 18 | 24
- | 13 | 2 | -5 | 10
- Zadanie 2. (trudne)
- Zmodyfikuj program z zadania nr 1 tak, aby obliczał sumę dowolnej, większej od zera liczby składników.
- Dla danych:
- 2 6 7 6
- -2 4 5
- 1 3
- 6
- 3 6 7 8 9 5
- powinniśmy uzyskać wynik:
- SUMA
- | 2 | 6 | 7 | 6 | | | 21
- | -2 | 4 | 5 | | | | 7
- | 1 | 3 | | | | | 4
- | 6 | | | | | | 6
- | 3 | 6 | 7 | 8 | 9 | 5 | 38
- Zadanie 3. (łatwe)
- Przyjmijmy, że słowem jest dowolny niepusty ciąg znaków różnych od spacji, tabulacji i znaku nowej linii. Napisać program obliczający liczbę słów w pliku, przy czym nie bierzemy pod uwagę wierszy rozpoczynających się od znaku średnika ';'.
- Dla pliku postaci:
- jeden 1+1 $$$
- ; to jest komentarz
- ;a to co?
- four ;;;;; six koniec
- powinniśmy zatem otrzymać wynik:
- 7
- Zadanie 4. (średnio trudne)
- Plik wejściowy zawiera macierz liczb całkowitych o wymiarach m(n (m może być różne od n). Napisać program obliczający sumę elementów leżących na głównej przekątnej.
- Rozważmy przykłady.
- Plik wejściowy:
- 5 0 1
- 0 5 0
- 1 0 5
- Plik wyjściowy:
- 15
- Plik wejściowy:
- 6 0 4 7 2
- 3 7 1 8 9
- 2 3 4 5 6
- Plik wyjściowy:
- 17
- Plik wejściowy:
- 3 7
- 3 5
- 0 4
- Plik wyjściowy:
- 8
- Zadanie 5. (trudne)
- Napisać program dokonujący edycji tekstowego pliku wejściowego na podstawie reguł zastępowania, mających postać:
- #replace co czym
- Każde wystąpienie łańcucha co ma być zastąpione łańcuchem czym. Znaki występujące po łańcuchu czym w regule są ignorowane. Reguła zastępowania dotyczy tekstu, który po niej następuje (reguła nie działa "wstecz").
- Jeśli na wejściu pojawi się plik postaci:
- #replace count 12
- in in
- #replace in 77 33 <--33 should be ignored
- main()
- { printf("%d", count+in);
- }
- to tekst wyjściowy powinien wyglądać następująco:
- in in
- ma77()
- { pr77tf("%d", 12+77);
- }
- Zadanie 6. (trudne)
- Plik wejściowy zawiera dowolny tekst, w którym mogą występować sekwencje postaci: pierwsza litera imienia, kropka '.', nazwisko. Każdą taką sekwencję zamienić na: nazwisko, spacja ' ', inicjał imienia, kropka '.'. Pozostałe słowa przepisać, "normalizując" wszystkie odstępy w wierszu do postaci pojedynczej spacji ' '.
- Dla pliku wejściowego postaci:
- J.Kowalski i W.Nowak
- Plik z danymi to t.in.
- Istotna jest liczba K. C jest licznikiem.
- powinniśmy uzyskać wynik:
- Kowalski J. i Nowak W.
- Plik z danymi to t.in.
- Istotna jest liczba K. C jest licznikiem.
- Zadanie 7. (łatwe)
- Napisać program znajdujący maksymalną liczbę przypisaną pewnemu identyfikatorowi w tablicy symboli. Plik wejściowy ma postać:
- - dany identyfikator (dowolne słowo),
- - kolejne linie tabeli, z których każda zawiera trzy elementy: identyfikator, znak ':' oraz liczbę całkowitą, przypisaną temu identyfikatorowi.
- Dla pliku wejściowego postaci:
- ala
- kasia :45
- jurek : 65
- ala : 10
- adam :75
- ala : 1306
- wojtek : 95
- uzyskamy wynik:
- 1306
- Zadanie 8.
- Posługując się interpreterem języka AWK sprawdzić, czy każda linia pliku wejściowego zawiera tekst będący poprawnym, numerycznym adresem poczty elektronicznej. Jeśli tak, to należy przepisać ten adres do pliku wyjściowego poprzedzając go tekstem e-mail: . Zakładamy, że w każdej linii pliku wejściowego może się znaleźć jeden adres pocztowy.
- Adres pocztowy składa się z następujących elementów:
- 1. nazwa użytkownika, zbudowana z liter (wielkich i małych) alfabetu łacińskiego, cyfr dziesiętnych, znaku podkreślenia '_', znaku kropki '.' i znaku myślnika '-',
- 2. znak '@',
- 3. czteroelementowa sekwencja liczb z zakresu 0-255, oddzielonych od siebie znakiem kropki '.'.
- Rozważmy przykładowe dane:
- user@150.254.41.3
- pcss@150.254.185.82
- 123@1.2.3
- xxx@150.254.257.8
- ala@ma.kota
- i odpowiadający im wynik:
- e-mail: user@150.254.41.3
- e-mail: pcss@150.254.185.82
- Zadanie 9.
- Napisać program, sprawdzający, czy plik wejściowy zawiera zapis składający się z gwiazdek '*' umieszczonych na głównej przekątnej hipotetycznego kwadratu, którego lewy górny róg stanowi lewy górny róg ekranu, np.:
- *
- *
- *
- *
- *
- Długość boku kwadratu nie jest z góry znana. Każdy wiersz pliku może zawierać wyłącznie spacje, znak '*' i znak nowej linii.
- Zadanie 10.
- Napisać program, sprawdzający, czy plik wejściowy zawiera zapis składający się z gwiazdek '*' umieszczonych na przekątnej hipotetycznego kwadratu, którego lewy górny róg stanowi lewy górny róg ekranu, np.:
- *
- *
- *
- *
- *
- Długość boku kwadratu nie jest z góry znana. Każdy wiersz pliku może zawierać wyłącznie spacje, znak '*' i znak nowej linii.
- Zadanie 11.
- Napisać program, sprawdzający, czy plik wejściowy zawiera pusty w środku kwadrat składający się z gwiazdek '*', którego lewy górny róg pokrywa się z lewym górnym rogiem ekranu, np.:
- ****
- * *
- * *
- ****
- Długość boku kwadratu nie jest z góry znana. Każdy wiersz pliku może zawierać wyłącznie spacje, znak '*' i znak nowej linii.
- Zadanie 12.
- Napisać program sprawdzający, czy plik wejściowy o nazwie 'we1' zawiera trójkąt prostokątny zbudowany z liter 'X' postaci:
- X
- XX
- XXX
- XXXX
- XXXXX
- Długość przyprostokątnej trójkąta zadana jest w pliku o nazwie 'we2'. Każdy wiersz pliku może zawierać wyłącznie spacje, znaki 'X' i znak nowej linii. Poprawność pliku sygnalizujemy komunikatem "OK!" (w przeciwnym wypadku - "Error!".
- Zadanie 13.
- Plik wejściowy zawiera macierz liczb całkowitych o wymiarach m(n (m może być różne od n). Napisać program obliczający iloczyn elementów stanowiących dolną macierz trójkątną.
- Rozważmy przykłady.
- Plik wejściowy:
- 5 0 1
- 1 5 0
- 1 1 5
- Plik wyjściowy:
- 125
- Plik wejściowy:
- 6 0 4 7 2
- 1 1 1 8 9
- 1 1 4 5 6
- Plik wyjściowy:
- 24
- Plik wejściowy:
- 3 7
- 3 5
- 0 4
- Plik wyjściowy:
- 45
- Zadanie 14.
- Plik wejściowy we1 zawiera dwie liczby naturalne, z których pierwsza określa liczbę wierszy a druga liczbę kolumn macierzy. Plik we2 natomiast składa się z linii tekstu zawierających wyłącznie litery X i znaki nowej linii (bez odstępów). Napisać program sprawdzający, czy plik we2 zawiera macierz zbudowaną z liter X o rozmiarze określonym w pliku we1 (komunikat OK!), czy też nie zawiera macierzy tej postaci (komunikat Error!).
- Rozważmy przykłady.
- Jeśli w pliku we1 umieścimy:
- 3 3
- natomiast we2 zawiera:
- XXX
- XXX
- XXX
- to na wyjściu pojawia się komunikat:
- OK!
- Jeśli natomiast plik we2 zawiera na przykład:
- XXX lub XXX lub XXX lub XXX lub X X X
- XXX XXX XXX XXXX X X X
- XXX XXX XXX X X X
- XXX
- to na wyjściu pojawi się komunikat:
- Error!
- Zadanie 15.
- Plik wejściowy zawiera w kolejnych wierszach następujące dane osobowe: imię, nazwisko i numer PESEL. Napisać program tworzący zestawienie tabelaryczne danych składające się z: nagłówka tabeli (oddzielone od siebie znakami '|'napisy 'Lp', 'Nazwisko', 'Imie', 'Data urodzenia', w następnej linii kreska pozioma) oraz w kolejnych liniach danych: numer kolejny, nazwisko, imię i data urodzenia w formacie dd.mm.rr. Program powinien sprawdzać poprawność danych wejściowych (dla numeru PESEL sprawdzamy jedynie, czy składa się on z jedenastu cyfr).
- Dla danych:
- Anna Kowalska 57091401261
- Alojzy Futrus 79052212345
- Jan Mann 790522023454
- ionizy Zdrada 77070707777
- Maria Zawada 30091197467
- Karol Czysty 78020386256 nn
- powinniśmy uzyskać:
- | Lp | Nazwisko | Imie | Data urodzenia
- -------------------------------------------------
- 1 Kowalska Anna 14.09.57
- 2 Futrus Alojzy 22.05.79
- 5 Zawada Maria 11.09.30
- Zadanie 16.
- Każdy wiersz pliku wejściowego zawiera zapis ciągu produkcji gramatyki bezkontekstowej, postaci: nieterminal lewej strony, znak zastąpienia ->, ciąg prawych stron oddzielonych od siebie znakiem |. Elementy prawej strony są rozdzielone spacjami, a nieterminale i terminale są dowolnymi ciągami liter i cyfr. Przetłumaczyć tekst wejściowy w zapis ciągu produkcji w języku YACC (założyć, że plik z danymi jest poprawny, a terminali nie wyróżniamy żadnymi specjalnymi znakami).
- Dla danych postaci:
- S -> S i ala | S i as | ola | bobik
- LD -> LD id | id
- powinniśmy uzyskać:
- S : S i ala
- | S i as
- | ola
- | bobik
- ;
- LD : LD id
- | id
- ;
Add Comment
Please, Sign In to add comment