Zadaci za samostalni rad - programski jezik C

0. Napisati C program koji za dve niske koje se zadaju kao argumenti komandne linije ispisuje rezultat poziva bibliotečnih funkcija (<string.h>):

1. Napisati program mygrep koji iz teksta sa ulaza (niz linija limitirane duzine) izdvaja sve linije koje sadrze nisku koja se zadaje kao argument komandne linije. Obezbediti da program ne pravi razliku medju malim i velikim slovima ako je medju argumentima komandne linije prisutan opcioni argument -i.

2. Napisati program myhead koji ispisuje prvih n linija teksta sa ulaza (niz linija limitirane duzine). Podrazumevana vrednost za n je 10, ali tu vrednost može da izmeni opcioni argument, tako da
myhead -n
štampa prvih n linija. Voditi računa o efikasnosti pri korišćenju raspoložive memorije.

3. Napisati program mytail koji ispisuje poslednjih n linija teksta sa ulaza (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 mysort koji koji leksikografski sortira u neopadajućem poretku linije teksta sa ulaza (niz linija limitirane dužine). 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 nije veća od 80 karaktera.

5. Napisati program mysorti koji leksikografski sortira u neopadajućem poretku linije teksta sa ulaza (niz linija limitirane dužine). Ako je kao argument komandne linije zadat opcioni argument -f , onda izvršiti sortiranje ignorišući razliku medju malim i velikim slovom. 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 -f -r . Može se pretpostaviti da ukupan broj linija nije veći od 1000, kao i da dužina svake linije nije veća od 80 karaktera.

6. Napisati program mygrep2 koji iz teksta sa ulaza (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 .

7. U programu se u nisci č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.


Napomena

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.