Zadaci za samostalni rad - programski jezik C

1.
Napisati C program koji za dve niske koje se zadaju kao argumenti komandne linije ispisuje:

2.
Napisati program mygrep koji iz datoteke ulaz.htm (niz linija limitirane duzine) izdvaja sve linije koje sadrže nisku koja se zadaje kao argument komandne linije i ispisuje ih na standardni izlaz. Obezbediti da program ne pravi razliku medju malim i velikim slovima ako je medju argumentima komandne linije prisutan
opcioni argument -i.

3.
Napisati program mytail koji ispisuje poslednjih n linija datoteke ulaz.htm (niz linija limitirane duzine). Podrazumevana vrednost za n je 10, ali tu vrednost može da izmeni opcioni argument, tako da
mytail -n
štampa poslednjih n linija. Voditi računa o efikasnosti pri korišćenju raspoložive memorije.

4.
Napisati program WordSort koji sortira u neopadajućem poretku po prvoj reči linije datoteke ulaz.txt (niz linija limitirane dužine) i prepisuje ih na standardni izlaz. Ako je kao argument komandne linije zadat opcioni argument -n , onda izvršiti numeričko sortiranje. Ako je kao argument komandne linije zadat opcioni argument -r , onda promeniti redosled sortiranja u nerastući poredak. Obezbediti da program radi i kad su prisutna oba opciona argumenta -r -n . Može se pretpostaviti da ukupan broj linija nije veći od 1000, kao i da dužina svake linije/reči nije veća od 80 karaktera.

5.
Napisati program mygrep2 koji iz datoteke ulaz.txt (niz linija limitirane dužine) izdvaja samo one linije koje ne sadrže nisku koja se zadaje kao argument komandne linije. Ako je medju argumentima komandne linije prisutan opcioni argument -n, onda obezbediti da program ispred svake linije na izlazu ispiše i njen redni broj u tekstu sa ulaza .

6.
U datoteci pogodi.txt se čuva sadržaj reči (sastavljen od velikih slova engleske abecede) koju korisnik pogađa. Napisati program vesanje koji od strane korisnika učitava jedno po jedno slovo koje unosi korisnik pogađajući reč. Pri učitavanju svakog uspešno pogođenog slova program treba da ispiše sve pojave onih slova u reči koja su do tada pogođena. Na mestima nepogođenih slova treba da stoje *. Voditi racuna da korisnik može da unese nešto što nije slovo (u kom slučaju program ne treba da mu ispiše trenutno stanje pogođenih slova, jer se ništa nije promenilo). Takodje, predvideti mogućnost da se korisniku uvaži unos malog slova (tretirati ga kao odgovarajuće veliko slovo). Program treba da se zaustavi nakon više od n neuspelih pokušaja ili, u suprotnom da ispiše ukupan broj pokušaja (uspešnih, neuspešnih) u slučaju da su pogođena sva slova za manje od n neuspelih pokušaja. Ceo broj n se zadaje iz komandne linije.

7.
Napisati C program koji od dve datoteke, u kojima su linije sortirane u rastućem leksikografskom poretku, formira treću datoteku koja sadrži linije koje postoje u obe datoteke, tako da ona bude, takoće, sortirana u RASTUĆEM leksikografskom poretku. Imena sve tri datoteke se zadaju kao argumenti komandne linije.

8.
Napisati C program koji od dve datoteke, u kojima su linije sortirane u rastućem leksikografskom poretku, formira treću datoteku koja sadrži linije koje postoje u obe datoteke, tako da ona bude sortirana u NEOPADAJUĆEM leksikografskom poretku. Imena sve tri datoteke se zadaju kao argumenti komandne linije.

9.
Napisati C program koji od dve datoteke, u kojima su linije sortirane u rastućem leksikografskom poretku, formira treću datoteku koja sadrži linije koje postoje u obe datoteke, tako da ona bude sortirana u OPADAJUĆEM leksikografskom poretku. Imena sve tri datoteke se zadaju kao argumenti komandne linije.


Napomena

1. U svim zadacima izveštaj o greškama poslati na standardni izlaz za poruke o grešci.

2. Zadaci po svojoj formulaciji predstavljaju negde uopštenje, a negde specijalni slučaj problema čija rešenja su obrađena na vežbama. Stoga svoja rešenja uporedite sa konceptima koji su izloženi na predavanjima i vežbama i, svakako, praktično testirajte korektnost svakog programa.