PomozMi

AWK

Nov 15th, 2014
220
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. user@150.254.41.3
  148.     pcss@150.254.185.82
  149. 123@1.2.3
  150. xxx@150.254.257.8
  151. ala@ma.kota
  152.  
  153. i odpowiadający im wynik:
  154. e-mail: user@150.254.41.3
  155. e-mail: pcss@150.254.185.82
  156.  
  157.  
  158.  
  159.  
  160.  
  161. Zadanie 9.
  162. 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.:
  163. *
  164.  *
  165.   *
  166.    *
  167.     *
  168. 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.
  169.  
  170.  
  171. Zadanie 10.
  172. 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.:
  173.     *
  174.    *
  175.   *
  176.  *
  177. *
  178. 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.
  179.  
  180.  
  181. Zadanie 11.
  182. 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.:
  183. ****
  184. *  *
  185. *  *
  186. ****
  187. 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.
  188.  
  189. Zadanie 12.
  190. Napisać program sprawdzający, czy plik wejściowy o nazwie 'we1' zawiera trójkąt prostokątny zbudowany z liter 'X' postaci:
  191.     X
  192.    XX
  193.   XXX
  194.  XXXX
  195. XXXXX
  196. 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!".
  197.  
  198.  
  199. Zadanie 13.
  200. 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ą.
  201.  
  202. Rozważmy przykłady.
  203.  
  204. Plik wejściowy:
  205.  
  206. 5   0   1
  207. 1   5   0
  208. 1   1   5
  209.  
  210. Plik wyjściowy:
  211. 125
  212.  
  213. Plik wejściowy:
  214. 6  0  4  7  2
  215. 1  1  1  8  9
  216. 1  1  4  5  6
  217.  
  218. Plik wyjściowy:
  219. 24
  220.  
  221. Plik wejściowy:
  222. 3  7
  223. 3  5
  224. 0  4
  225.  
  226. Plik wyjściowy:
  227. 45
  228.  
  229. Zadanie 14.
  230. 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!).
  231. Rozważmy przykłady.
  232.  
  233. Jeśli w pliku we1 umieścimy:
  234. 3 3
  235.  
  236. natomiast we2 zawiera:
  237. XXX
  238. XXX
  239. XXX
  240.  
  241. to na wyjściu pojawia się komunikat:
  242. OK!
  243.  
  244. Jeśli natomiast plik we2 zawiera na przykład:
  245.  XXX        lub XXX     lub XXX lub     XXX lub X X X
  246. XXX         XXX         XXX     XXXX        X X X
  247. XXX                     XXX     XXX     X X X
  248.                         XXX
  249. to na wyjściu pojawi się komunikat:
  250. Error!
  251.  
  252.  
  253. Zadanie 15.
  254.     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).
  255.    
  256. Dla danych:
  257. Anna Kowalska   57091401261
  258. Alojzy Futrus 79052212345
  259.     Jan  Mann 790522023454
  260. ionizy Zdrada   77070707777
  261. Maria Zawada    30091197467
  262.     Karol Czysty    78020386256 nn
  263.  
  264. powinniśmy uzyskać:
  265. | Lp | Nazwisko     | Imie       | Data urodzenia
  266. -------------------------------------------------
  267. 1      Kowalska       Anna         14.09.57
  268. 2      Futrus         Alojzy       22.05.79
  269. 5      Zawada         Maria        11.09.30
  270.  
  271.  
  272. Zadanie 16.
  273. 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).
  274.  
  275. Dla danych postaci:
  276. S -> S i ala | S i as | ola | bobik
  277. LD -> LD id | id
  278.  
  279. powinniśmy uzyskać:
  280. S : S i ala
  281.   | S i as
  282.   | ola
  283.   | bobik
  284.   ;
  285. LD : LD id
  286.   | id
  287.   ;
Add Comment
Please, Sign In to add comment