PomozMi

AWK

Nov 15th, 2014
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Awk 9.06 KB | None | 0 0
  1. Zadanie 1. (łatwe)
  2. 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 | .
  3.  
  4. Zatem dla danych:
  5. 1   5 18
  6. 13  2     -5
  7.  
  8. powinniśmy uzyskać wynik:
  9.                       SUMA
  10. | 1    | 5    | 18   | 24  
  11. | 13   | 2    | -5   | 10  
  12.  
  13.  
  14.  
  15. Zadanie 2. (trudne)
  16. Zmodyfikuj program z zadania nr 1 tak, aby obliczał sumę dowolnej, większej od zera liczby składników.
  17.  
  18. Dla danych:
  19. 2   6   7  6
  20. -2 4 5
  21. 1       3
  22. 6
  23. 3   6   7 8 9    5
  24.  
  25. powinniśmy uzyskać wynik:
  26.                           SUMA
  27. | 2  | 6     | 7     | 6     |   |   | 21
  28. | -2     | 4     | 5     |   |   |   | 7
  29. | 1  | 3     |   |   |   |   | 4
  30. | 6  |   |   |   |   |   | 6
  31. | 3  | 6     | 7     | 8     | 9     | 5     | 38
  32.                        
  33.  
  34.  
  35. Zadanie 3. (łatwe)
  36.  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 ';'.
  37.  
  38. Dla pliku postaci:
  39. jeden  1+1   $$$
  40. ; to jest komentarz
  41. ;a to co?
  42. four  ;;;;; six koniec
  43.  
  44. powinniśmy zatem otrzymać wynik:
  45. 7
  46.  
  47.  
  48. Zadanie 4. (średnio trudne)
  49. 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.
  50. Rozważmy przykłady.
  51.  
  52. Plik wejściowy:
  53.  
  54. 5   0   1
  55. 0   5   0
  56. 1   0   5
  57.  
  58. Plik wyjściowy:
  59. 15
  60.  
  61. Plik wejściowy:
  62. 6 0 4 7 2
  63. 3 7 1 8 9
  64. 2 3 4 5 6
  65.  
  66.  
  67. Plik wyjściowy:
  68. 17
  69.  
  70. Plik wejściowy:
  71. 3 7
  72. 3 5
  73. 0 4
  74.  
  75. Plik wyjściowy:
  76. 8
  77.  
  78.  
  79. Zadanie 5. (trudne)
  80. Napisać program dokonujący edycji tekstowego pliku wejściowego na podstawie reguł zastępowania, mających postać:
  81.     #replace  co  czym
  82. 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").
  83.  
  84. Jeśli na wejściu pojawi się plik postaci:
  85. #replace count 12
  86. in in
  87.     #replace in 77 33 <--33 should be ignored
  88. main()
  89. { printf("%d", count+in);
  90. }
  91.  
  92. to tekst wyjściowy powinien wyglądać następująco:
  93. in in
  94. ma77()
  95. { pr77tf("%d", 12+77);
  96. }
  97.  
  98.  
  99.  
  100.  
  101.  
  102. Zadanie 6. (trudne)
  103. 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 ' '.
  104.  
  105. Dla pliku wejściowego postaci:
  106. J.Kowalski  i  W.Nowak
  107. Plik    z   danymi to t.in.
  108. Istotna jest liczba K. C jest licznikiem.
  109.  
  110. powinniśmy uzyskać wynik:
  111. Kowalski J. i Nowak W.
  112.  
  113. Plik z danymi to t.in.
  114. Istotna jest liczba K. C jest licznikiem.
  115.  
  116.  
  117. Zadanie 7. (łatwe)
  118. Napisać program znajdujący maksymalną liczbę przypisaną pewnemu identyfikatorowi w tablicy symboli. Plik wejściowy ma postać:
  119. - dany identyfikator (dowolne słowo),
  120. - kolejne linie tabeli, z których każda zawiera trzy elementy: identyfikator, znak ':' oraz liczbę całkowitą, przypisaną temu identyfikatorowi.
  121.  
  122. Dla pliku wejściowego postaci:
  123. ala
  124. kasia       :45
  125. jurek : 65
  126. ala :       10
  127. adam    :75
  128. ala   :  1306
  129. wojtek  : 95
  130.  
  131. uzyskamy wynik:
  132. 1306
  133.  
  134.  
  135. Zadanie 8.
  136. 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.
  137.  
  138. Adres pocztowy składa się z następujących elementów:
  139.  
  140. 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 '-',
  141.  
  142. 2. znak '@',
  143.  
  144. 3. czteroelementowa sekwencja liczb z zakresu 0-255, oddzielonych od siebie znakiem kropki '.'.
  145.  
  146. Rozważmy przykładowe dane:
  147. 123@1.2.3
  148.  
  149. i odpowiadający im wynik:
  150.  
  151.  
  152.  
  153.  
  154.  
  155. Zadanie 9.
  156. 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.:
  157. *
  158.  *
  159.   *
  160.    *
  161.     *
  162. 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.
  163.  
  164.  
  165. Zadanie 10.
  166. 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.:
  167.     *
  168.    *
  169.   *
  170.  *
  171. *
  172. 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.
  173.  
  174.  
  175. Zadanie 11.
  176. 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.:
  177. ****
  178. *  *
  179. *  *
  180. ****
  181. 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.
  182.  
  183. Zadanie 12.
  184. Napisać program sprawdzający, czy plik wejściowy o nazwie 'we1' zawiera trójkąt prostokątny zbudowany z liter 'X' postaci:
  185.     X
  186.    XX
  187.   XXX
  188.  XXXX
  189. XXXXX
  190. 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!".
  191.  
  192.  
  193. Zadanie 13.
  194. 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ą.
  195.  
  196. Rozważmy przykłady.
  197.  
  198. Plik wejściowy:
  199.  
  200. 5   0   1
  201. 1   5   0
  202. 1   1   5
  203.  
  204. Plik wyjściowy:
  205. 125
  206.  
  207. Plik wejściowy:
  208. 6  0  4  7  2
  209. 1  1  1  8  9
  210. 1  1  4  5  6
  211.  
  212. Plik wyjściowy:
  213. 24
  214.  
  215. Plik wejściowy:
  216. 3  7
  217. 3  5
  218. 0  4
  219.  
  220. Plik wyjściowy:
  221. 45
  222.  
  223. Zadanie 14.
  224. 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!).
  225. Rozważmy przykłady.
  226.  
  227. Jeśli w pliku we1 umieścimy:
  228. 3 3
  229.  
  230. natomiast we2 zawiera:
  231. XXX
  232. XXX
  233. XXX
  234.  
  235. to na wyjściu pojawia się komunikat:
  236. OK!
  237.  
  238. Jeśli natomiast plik we2 zawiera na przykład:
  239.  XXX        lub XXX     lub XXX lub     XXX lub X X X
  240. XXX         XXX         XXX     XXXX        X X X
  241. XXX                     XXX     XXX     X X X
  242.                         XXX
  243. to na wyjściu pojawi się komunikat:
  244. Error!
  245.  
  246.  
  247. Zadanie 15.
  248.     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).
  249.    
  250. Dla danych:
  251. Anna Kowalska   57091401261
  252. Alojzy Futrus 79052212345
  253.     Jan  Mann 790522023454
  254. ionizy Zdrada   77070707777
  255. Maria Zawada    30091197467
  256.     Karol Czysty    78020386256 nn
  257.  
  258. powinniśmy uzyskać:
  259. | Lp | Nazwisko     | Imie       | Data urodzenia
  260. -------------------------------------------------
  261. 1      Kowalska       Anna         14.09.57
  262. 2      Futrus         Alojzy       22.05.79
  263. 5      Zawada         Maria        11.09.30
  264.  
  265.  
  266. Zadanie 16.
  267. 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).
  268.  
  269. Dla danych postaci:
  270. S -> S i ala | S i as | ola | bobik
  271. LD -> LD id | id
  272.  
  273. powinniśmy uzyskać:
  274. S : S i ala
  275.   | S i as
  276.   | ola
  277.   | bobik
  278.   ;
  279. LD : LD id
  280.   | id
  281.   ;
Add Comment
Please, Sign In to add comment