04.11.2014 Views

Osnovi programiranja - vezbe - Alas

Osnovi programiranja - vezbe - Alas

Osnovi programiranja - vezbe - Alas

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Osnovi</strong> <strong>programiranja</strong> - vežbe<br />

Filip Marić<br />

9. januar 2003.<br />

1 Zadaci sa praktikuma<br />

Zadatak 1.1 Izračunati sumu cifara broja koji se unosi sa tastature.<br />

Rešenje: Kako odrediti poslednju cifru u dekadnom zapisu broja n? Zapišimo :<br />

tj.<br />

n = (a m a m−1 . . . a 0 ) 10<br />

n = a m 10 m + a m−1 10 m−1 + . . . + a 1 10 + a 0<br />

gde su a 0 . . . a m dekadne cifre. Vidimo da su svi clanovi ove sume deljivi sa 10,<br />

osim a 0 . To znači da je a 0 ostatak pri deljenju broja n sa 10. Posmatrajmo<br />

broj [ n 10 ]. On se može zapisati kao (a ma m−1 . . . a 1 ) 10 . Znači, cifre našeg broja<br />

n možemo da odredimo tako što odredimo njegovu poslednju cifru, a zatim<br />

problem svedemo na odredjivanje cifara broja [ n 10 ].<br />

Npr. Broj n=1234. Njegova poslednja cifra je (1234 mod 10) tj. 4. Da bi<br />

smo mu odredili sve ostale cifre, potrebno je odrediti cifre broja [ 1234<br />

10 ] = 123.<br />

Njegova poslednja cifra je 3. Dalje odredimo cifre broja [ 123<br />

10<br />

] = 12. Njegova<br />

poslednja cifra je 2. Preostaje da se odrede cifre broja 1. Njegova poslednja i<br />

jedina cifra je 1.<br />

Na osnovu ovog razmatranja možemo da pristupimo i pisanju koda:<br />

#include <br />

int main()<br />

{ /* Broj ciju sumu cifara izracunavamo */<br />

int n;<br />

/* Promenjiva koja cuva trenutnu vrednost sume */<br />

int suma=0;<br />

/* Unos broja sa tastature */<br />

printf("Unesite ceo broj : ");<br />

scanf("%d",&n);<br />

/* Ako je broj 0, zavrsavamo */<br />

while(n!=0)<br />

{ suma+=n%10; /* Poslednja cifra broja n se dodaje na sumu */<br />

n/=10; /* Svodimo problem na broj [n/10] */<br />

1


}<br />

/* Ispisimo sumu cifara */<br />

printf("Suma cifara je %d\n",suma);<br />

}<br />

return 0;<br />

Zadatak 1.2 Sa tastature se unosi ceo broj n. Ispisati sve cifre koje sačinjavaju<br />

binarni zapis ovog broja, počevši od cifre najmanje težine.<br />

Rešenje:Iako formulacija ovog zadatka na prvi pogled izgleda prilično različita<br />

od formulacije prethodnog zadatka, u suštini se radi o veoma sličnim problemima.<br />

Naime, zapišimo broj n u obliku:<br />

tj.<br />

n = (a m . . . a 0 ) 2<br />

n = a m 2 m + a m−1 2 m−1 + . . . + a 1 2 + a 0<br />

Sada primećujemo, slično kao i malo pre, da je cifra a 0 jednaka n mod 2. Problem<br />

sada možemo da svedemo na odredjivanje binarnog zapisa broja (a m . . . a 1 ),<br />

koji je ustvari jednak [ n 2<br />

]. Dakle kod izgleda ovako:<br />

#include <br />

int main()<br />

{ /* Broj cije binarne cifre racunamo */<br />

int n;<br />

/* Unos broja sa tastature */<br />

printf("Unesite ceo broj : ");<br />

scanf("%d",&n);<br />

printf("Binarne cifre broja %d,<br />

pocevsi od cifre najmanje tezine su:\n",n);<br />

/* Ako je broj 0, zavrsavamo */<br />

while(n!=0)<br />

{ /* Ispisujemo binarnu cifru broja n najmanje tezine */<br />

printf("%d\n",n%2);<br />

/* Svodimo problem na broj [n/2] */<br />

n/=2;<br />

}<br />

}<br />

return 0;<br />

Zadatak 1.3 Sa tastature se unosi broj n, a zatim n binarnih cifara. Ispisati<br />

dekadnu vrednost broja koji se zapisuje pomoću unetih binarnih cifara i to<br />

počevši od cifre najveće težine. Npr. Ako je uneto n=4, i zatim cifre : 1 1<br />

0 1, program treba da ispiše 13.<br />

2


Rešenje: Neka su redom sa tastature unošene cifre : c 1 , c 2 , . . . , c n . Broj koji<br />

treba da izračunamo je dakle:<br />

a = c 1 2 n−1 + c 2 2 n−2 + . . . + c n−1 2 + c n<br />

Ovo možemo da zapišemo na malo drugačiji način :<br />

a = (. . . ((((0) ∗ 2 + c 1 ) ∗ 2 + c 2 ) ∗ 2 + c 3 ) . . .) ∗ 2 + c 0<br />

Počnimo od vrednosti najugnježdjenije zagrade tj. 0. Vrednost sledeće zagrade<br />

se može izračunati kao (0) ∗ 2 + c 1 . Vrednost zagrade koja je sledeća po dubini<br />

može da se dobije tako što se vrednost ove zagrade pomnoži sa 2 i na to se doda<br />

c 2 . Ova pravilnost se i na dalje prenosi. Naime vrednost svake sledeće zagrade<br />

je jednaka proizvodu vrednosti prethodne zagrade i broja 2, na koji je dodata<br />

sledeća binarna cifra c i . Ova pravilnost nam pomaže da lako napišemo program:<br />

#include <br />

int main()<br />

{<br />

/* Broj binarnih cifara naseg broja */<br />

int n;<br />

/* Promenjiva koja cuva vrednost tekuce zagrade u izrazu<br />

(...((((0)*2+c_1)*2+c_2)*2+c_3)...)*2+c_0) */<br />

int a=0;<br />

/* Brojacka promenjiva u petlji */<br />

int i;<br />

/* Unos broja cifara sa tastature */<br />

printf("Unesite broj cifara binarnog broja: ");<br />

scanf("%d",&n);<br />

/* Unosimo cifru po cifru broja<br />

i ujedno racunamo vrednost sledece zagrade */<br />

for (i=1; i


Zadatak 1.4 Sa tastature se unosi prirodan broj n. Ispisati na ekran sve delioce<br />

broja n.<br />

Rešenje: Ideja algoritma je da proverimo redom za sve brojeve koji su potencialno<br />

delioci broja n, da li su i stvarno delioci broja n. Broj 1 je delilac svakog<br />

prirodnog broja, tako da nema potrebe za njega vrsiti bilo kakvu proveru, nego<br />

je dovoljno konstatovati da je 1 delilac broja n. Uočimo na ovom mestu još i<br />

činjenicu da je najveći delilac broja n (osim samog n), svakako manji ili jednak<br />

[ n 2<br />

]. Zaista, predstavimo broj n u obliku:<br />

n = a · b<br />

Ako je a > [ n 2<br />

], tada je b < 2, što je naravno nemoguće. Znači da se svi<br />

potencialni delioci broja n (osim 1 i n), nalaze izmedju 2 i n/2 (gde je ovo c-<br />

ovska oznaka za celobrojno deljenje, pošto je n celobrojnog tipa). Sada možemo<br />

da napišemo program:<br />

#include <br />

#define GRESKA 1<br />

#define OK 0<br />

int main()<br />

{ int n; /* Broj cije delioce trazimo */<br />

int i; /* Pomocna brojacka promenjiva,<br />

koja ce da prolazi kroz sve potencijalne<br />

delioce broja n */<br />

/* Unesimo broj sa tastature */<br />

printf("Unesite prirodni broj : ");<br />

scanf("%d",&n);<br />

/* Proverimo da li je stvarno unet prirodan broj<br />

Ako nije, ispisujemo odgovarajucu poruku i<br />

program zavrsava rad sa kodom greske */<br />

if (n


}<br />

i je stvarno delilac */<br />

if (n%i==0)<br />

printf("%d\t",i);<br />

/* n je delioc broja n. Ispisimo i to */<br />

printf("%d\n",n);<br />

}<br />

return OK;<br />

Drugo rešenje: Ako nije potrebno ispisati delioce poredjane po velicini, ovo<br />

rešenje se može još malo poboljšati. Ilustrujmo to na primeru izračunavanja<br />

sume svih delioca broja. Rešenje se zasniva na činjenici da ako je a delilac broja<br />

n, onda je i n a<br />

, takodje delilac broja n. Prilikom implementacije, brojeve koji<br />

su veći od √ n nema smisla ispitivati. Zaista ako napišemo:<br />

n = a · b<br />

gde je a > √ n, važi da je b < √ n, tako da je delilac a, već ispitan prilikom<br />

ispitivanja broja b, kao n b .<br />

#include <br />

#include <br />

#define GRESKA 1<br />

#define OK 0<br />

int main()<br />

{ /* Broj cije delioce trazimo */<br />

int n;<br />

/* Pomocna brojacka promenjiva */<br />

int i;<br />

/* Suma delioca broja n */<br />

int suma;<br />

/* Unesimo broj sa tastature */<br />

printf("Unesite prirodni broj : ");<br />

scanf("%d",&n);<br />

/* Proverimo da li je stvarno unet prirodan broj<br />

Ako nije, ispisujemo odgovarajucu poruku i<br />

program zavrsava rad sa kodom greske */<br />

if (n


else<br />

suma=n+1;<br />

/* Ispitajmo za svaki broj i izmedju 2 i koren iz n<br />

da li deli broj n. Ako deli, ispisimo da je on<br />

delilac, kao i da je broj n/i delilac broja n */<br />

for (i=2; i*i=n */<br />

if (i*i==n)<br />

suma+=i;<br />

/* Ispisimo sumu delioca */<br />

printf("Suma delioca broja %d je %d\n",n,suma);<br />

}<br />

return OK;<br />

Zadatak 1.5 Sa tastature se unosi prirodan broj n. Odrediti da li je n prost<br />

broj.<br />

Rešenje: Broj je prost ako je deljiv samo sa 1 i sa samim sobom. Iskoristimo<br />

tehniku pokazanu u drugom rešenju zadatka 1.4. Dovoljno je dakle da proverimo<br />

da li broj n ima delioce izmedju 2 i [ √ n]. Rešenje zasnivamo na osobini c-jezika,<br />

da postoji naredba za bezuslovni prekid rada funkcije i ”vraćanje” vrednosti, tj.<br />

naredba return.<br />

#include <br />

#define GRESKA 1<br />

#define OK 0<br />

int main()<br />

{ int n; /* Broj za koga ispitujemo da li je prost */<br />

int i; /* Pomocna brojacka promenjiva,<br />

koja ce da prolazi kroz sve potencijalne<br />

delioce broja n */<br />

/* Unesimo broj sa tastature */<br />

printf("Unesite prirodni broj : ");<br />

6


scanf("%d",&n);<br />

/* Proverimo da li je stvarno unet prirodan broj<br />

Ako nije, ispisujemo odgovarajucu poruku i<br />

program zavrsava rad sa kodom greske */<br />

if (n


* pomocna brojacka promenjiva */<br />

int i;<br />

/* unosimo dimenziju prostora */<br />

printf("Unesite dimenziju prostora (1


}<br />

Zadatak 1.7 Sa tastature se unosi neki tekst. Napraviti malu statistiku u kojoj<br />

se prikazuje koliko puta je pritisnuto svako od malih slova engleske azbuke, zatim<br />

koliko puta je pritisnuto svako od velikih slova engleske azbuke, koliko puta je<br />

bila pritisnuta koja cifra i na kraju koliko je bilo karaktera koji ne spadaju ni u<br />

jednu od ove tri kategorije.<br />

Rešenje: Program bi trebalo da sadrži tri niza brojača za svaku od pomenutih<br />

kategorija : brojač pojavljivanja svakog malog slova, brojač pojavljivanja svakog<br />

velikog slova i brojač pojavljivanja svake cifre. Sa standardnog ulaza učitavamo<br />

karakter po karakter i proveravamo da li je malo, veliko slovo ili cifra. Ako<br />

je nešto od ovoga, pronalazimo odgovarajući brojač u nizu i uvećavamo ga.<br />

Rešenje je zasnovano na činjenici da su karakteri iz svake od ovih kategorija<br />

poredjani jedan za drugim u ASCII tabeli, tako da je jako lako odrediti indeks<br />

odgovarajućeg brojača u nizovima brojača, tako što ćemo od ascii vrednosti<br />

tekućeg karaktera oduzeti ascii kod početnog karaktera ogovarajuće kategorije<br />

(’a’, ’A’ ili ’0’). Primetimo još da možemo na ekran da ispišemo proizvoljan<br />

karakter korišćenjem :<br />

printf("%c",acsiikod);<br />

gde je asciikod ASCII kod karaktera koji ispisujemo.<br />

#include <br />

int main()<br />

{ int c; /* tekuci karakter sa ulaza */<br />

int i; /* pomocna brojacka promenjiva */<br />

/* brojaci za svako malo slovo, veliko slovo, cifru,<br />

kao i brojac za sve ostale karaktere */<br />

int mslova[26], vslova[26], cifre[10], ostali;<br />

/* postavimo vrednost svih brojaca na 0 */<br />

for (i=0; i


koji se nalazi u nizu brojaca mslova, na poziciji c-’a’. */<br />

mslova[c-’a’]++;<br />

/* Ako nije bilo malo slovo, proveravamo da li je mozda veliko */<br />

else if (’A’


zagrade je jednaka proizvodu vrednosti prethodne zagrade i broja x, na koji<br />

je dodata sledeći koeficijent polinoma c i . Ova pravilnost nam pomaže da lako<br />

napišemo program 1<br />

#define MAXSTEPEN 10<br />

#define GRESKA 1<br />

#define OK 0<br />

#include <br />

int main()<br />

{ /* Stepen polinoma */<br />

int n;<br />

/* Niz koeficijenata polinoma */<br />

float koeficijenti[MAXSTEPEN+1];<br />

/* Tacka u kojoj se racuna vrednost polinoma */<br />

float x;<br />

/* Promenjiva koja cuva vrednost tekuce zagrade u izrazu<br />

(...((((0)*x+c_n)*x+c_{n-1})*x+c_{n-2})...)*x+c_0) */<br />

float p=0;<br />

/* Brojacka promenjiva u petlji */<br />

int i;<br />

/* Unos polinoma sa tastature */<br />

printf("Unesite stepen polinoma : ");<br />

scanf("%d",&n);<br />

if (nMAXSTEPEN)<br />

{ printf("Stepen polinoma nije odgovarajuci!\n");<br />

return GRESKA;<br />

}<br />

for (i=0; i=0; i--)<br />

p=p*x+koeficijenti[i]; /* Vrednost nove zagrade */<br />

/* Vrednost polinoma je vrednost spoljasnje zagrade,<br />

koja se trenutno nalazi u promenjivoj p */<br />

printf("P(%f)=%f\n",x,p);<br />

1 primetimo da se program mogao napisati i bez smeštanja niza koeficijenata polinoma u<br />

memoriju, da je unos koeficijenata počeo od koeficijenta uz najniži stepen<br />

11


}<br />

return 0;<br />

Zadatak 1.9 a) Napraviti funkciju koja izračunava vrednost faktorijela zadatog<br />

broja.<br />

b)Sa tastature se unosi broj n. Ispisati vrednosti faktorijela svih brojeva od<br />

1 do n.<br />

Pošto je faktorijel funkcija koja veoma brzo raste, već za male vrednosti broja n,<br />

n! je prilično veliki broj. Zbog toga je rezultat funkcije tipa long, a argument<br />

funkcije je dovoljno da bude tipa int (za koji se podrazumeva da je kratki<br />

integer). Pošto radimo samo sa pozitivnim brojevima, koristimo samo unsigned<br />

tipove. Važno je primetiti da je već broj 13! toliko veliki da ne može da se<br />

zapiše ni u unsigned long tip podataka, tako da naša funkcija ne može da radi<br />

ispravno već za n > 12.<br />

n! = 1 · 2 · . . . · n<br />

Pri čemu važi da je 0! = 1! = 1.<br />

Znači da vrednost faktorijela možemo izračunati množeci sve brojeve od 2<br />

do n za n ≥ 2. To se standardno postiže uvodjenjem promenjive proizvod, čija<br />

se vrednost na početku postavi na 1, da bi se kasnije množila sa svim činiocima<br />

traženog proizvoda. Pošto je 0! = 1! = 1, vrednost promenjive proizvod će da<br />

sadrži odgovarajuću vrednost faktorijela i u slučajevima n = 1 i n = 0. 2<br />

unsigned long faktorijel(unsigned int n)<br />

{ unsigned long proizvod=1;<br />

for (unsigned int i=2; i


Medjutim, to rešenje je jako neefikasno. Prilikom računanja svake nove vrednosti<br />

faktorijela unutar funkcije, implicitno se izračunavanju vrednosti faktorijela i<br />

svih brojeva do tog, a te vrednosti smo već računali (i to najčešće mnogo puta)<br />

prilikom prethodnih poziva funkcije. Zato je rešenje koje mnogo bolje radi:<br />

#include<br />

main()<br />

{ unsigned long proizvod=1;<br />

unsigned int n,i;<br />

printf("Unesite broj n (0


cifre[c++]=’0’+a%10;<br />

a=a/10;<br />

}<br />

/* Na kraj niza cifara postavimo karakter 0, koji je oznaka<br />

za kraj stringa */<br />

cifre[c]=’\0’;<br />

}<br />

/* funkcija vraca poziciju poslednje cifre u nizu */<br />

return c-1;<br />

main()<br />

{ /* Niz od 6 karaktera koji ce da sadrzi cifre naseg broja */<br />

char cifre[6];<br />

/* Broj n */<br />

unsigned int n;<br />

/* Indeks poslednje cifre u nizu */<br />

unsigned int poslednja;<br />

/* Pomocna promenjiva za proveru da li je broj palindrom */<br />

unsigned int indeks;<br />

/* Unosimo sa tastature broj n */<br />

printf("Unesi broj n : ");<br />

scanf("%u",&n);<br />

/* Nadjimo niz karaktera koji odgovara broju n */<br />

poslednja=uint_to_char(n,cifre);<br />

/* Poredimo sada prvi i poslednji, drugi i pretposlednji<br />

karakter sve dok ne naidjemo na neslaganje, ili dok<br />

nam se levi i desni kraj ne mimoidju */<br />

/* prvi karakter ima indeks 0, a poslednja */<br />

indeks=0;<br />

while ( cifre[indeks]==cifre[poslednja-indeks] &&<br />

indeks=poslednja-indeks)<br />

printf("Broj %u je palindrom\n",n);<br />

else<br />

printf("Broj %u nije palindrom\n",n);<br />

Zadatak 1.11 Napraviti funkciju<br />

int atoi(char []);<br />

čiji je rezultat brojna vrednost označenog broja, koji je zapisan u prosledjenom<br />

14


nizu karaktera.<br />

#include <br />

/* Makro koji proverava da li je c cifra */<br />

#define isdigit(c) (’0’


Tj. niz brojeva f n počinje sa : 0,1,1,2,3,5,8,13,21,. . . Napisati program koji za<br />

uneto n, ispisuje f n .<br />

Zadatak 2.2 Sa tastature se unosi pozitivan ceo broj x manji od 2 32 , kao i dva<br />

broja i i j, koji su izmedju 0 i 10. Napisati program koji menja i-tu i j-tu cifru<br />

broja x.<br />

Zadatak 2.3 Iz analize je poznato da je :<br />

sin(x) =<br />

e x =<br />

∞∑<br />

n=0<br />

x n<br />

n!<br />

∞∑<br />

(−1) n−1 x 2n−1<br />

(2n − 1)!<br />

n=1<br />

cos(x) =<br />

∞∑<br />

n=0<br />

(−1) n x2n<br />

(2n)!<br />

Sa tastature se unosi racionalan broj x i prirodan broj n. Izračunati približno<br />

e x , sin(x), cos(x), tako što ćete sračunati prvih n članova gornjih suma.<br />

Zadatak 2.4 Sa tastature se unose brojevi s i t. Napisati program koji ispisuje<br />

cifre najmanjeg prirodnog broja koji ima osobinu da se završava cifrom s i da<br />

se poveća t puta ako mu se cifra s prebaci sa kraja na početak.<br />

a) Redosled cifara nije bitan<br />

b) Ispisati broj u ispravnom redosledu cifara<br />

Zadatak 2.5 n-tocifreni broj je Armstrongov, ako je jednak sumi n-tih stepena<br />

svojih cifara. Napisati program koji za uneti broj ispituje da li je Armstrongov.<br />

Zadatak 2.6 Napisati program koji ispisuje prvih n brojeva koji imaju osobinu<br />

da su deljivi sa 7, i da im je suma cifara paran broj.<br />

Zadatak 2.7 Broj je Nivenov ako je deljiv sumom svojih cifara.<br />

program koji za uneto n ispisuje prvih n Nivenovih brojeva.<br />

Napisati<br />

Zadatak 2.8 Neka je dat broj s 0 . Broj s 1 je suma kvadrata cifara broja s 0 .<br />

Slično dalje definišemo da je s i+1 suma kvadrata cifara broja s i . Broj s 0 je<br />

Srećan, ako (∃k)s k = 1. Napisati program koji za uneti broj n ispituje da li je<br />

srećan.<br />

Zadatak 2.9 Za uneto n ≤ 10 ispisati niz koeficijenata u razvoju (a + b) n ,<br />

koristeći postupak poznat kao Paskalov trougao, tj. koristeći osobinu da je u<br />

”trouglu”:<br />

1<br />

1 2 1<br />

1 3 3 1<br />

1 4 6 4 1<br />

.........<br />

16


Svaki elemenat jednak zbiru dva koja su iznad njega levo i desno. Tj. koristeći<br />

osobinu binomnih koeficijenata da je:<br />

( ( ) ( )<br />

n n − 1 n − 1<br />

= +<br />

k)<br />

k k − 1<br />

Modifikovati program tako da na ekran ispiše prvih n redova paskalovog trougla.<br />

Zadatak 2.10 Za uneti broj n manji od milijardu ispitati da li su mu cifre<br />

poredjane u neopadajući niz.<br />

Zadatak 2.11 Sa tastature se unose prirodni brojevi a i b. Napisati program,<br />

bez korišćenja operatora / i %, koji ispisuje celobrojni količnik i ostatak pri deljenju<br />

broja a brojem b.<br />

Zadatak 2.12 Napisati funkciju :<br />

int mirror(unsigned long a, int n)<br />

Koja obrće prvih n bitova najmanje težine broja a.<br />

Zadatak 2.13 Napisati funkciju<br />

int hex_value(char c);<br />

koja za karakter c odredjuje da li je heksadecimalna cifra i ako jeste vraća njenu<br />

vrednost, a ako nije vraća -1. Koristeći ovu funkciju, napisati program koji za<br />

uneti niz karaktera (ne duži od 8) ispisuje heksadekadnu vrednost broja predstavljenog<br />

tim nizom karaktera.<br />

Zadatak 2.14 Napisati program koji sve višestruke razmake u tekstu koji se<br />

unosi sa tastature zamenjuje sa jednostrukim razmakom. Npr. za uneto<br />

Zdravo<br />

Svete<br />

program ispisuje<br />

Zdravo Svete<br />

Zadatak 2.15 Napisati funkciju<br />

void to_lower(char[] string);<br />

koja menja sve pojave velikih slova tog stringa u odgovarajuća mala slova. Zatim<br />

napisati program koji koristeći ovu funkciju konvertuje uneti tekst u odgovarajući<br />

tekst bez malih slova i ispisuje ga. Pretpostaviti da se tekst koji se unosi sa<br />

tastature sastoji od najviše 80 karaktera.<br />

Zadatak 2.16 Jedan od najprostijih načina kodiranja reči je tzv. Cezarova<br />

šifra. Postupak se sastoji u cikličkom pomeranju slova po abecedi za odgovarajući<br />

razmak. Npr. za razmak 2 slovo A se kodira sa C, B sa D, dok se Y kodira sa<br />

A, a Z sa B. Napisati funkciju:<br />

void cezar(char[] string, int razmak);<br />

17


koja kodira prosledjeni tekst Cezarovom šifrom. Napisati i program, koji koristeći<br />

ovu funkciju, prvo kodira uneti tekst (nema više od 80 karaktera), a zatim<br />

ga dekodira.<br />

Zadatak 2.17 Napisati funkciju:<br />

void izbaci(char c, char s[])<br />

Koja iz stringa s izbacuje sva pojavljivanja slova c.<br />

Zadatak 2.18 a) Napraviti funkciju :<br />

int getline(char s[], int lim)<br />

Koja u čita liniju teksta otkucanog na tastaturi i smešta je u niz karaktera s koji<br />

je dužine lim. Vrednost funkcije je dužina pročitane linije.<br />

b) Sa tastature se unosi reč koja ima manje od 10 slova. Napraviti funkciju:<br />

int findstr(char str[], char substr[])<br />

koja vraća poziciju prvog pojavljivanja reči subrstr u reči str. Ako str ne<br />

sadrži substr, funkcija vraća -1.<br />

c) Sa tastature se unosi reč koja ima najviše 10 slova. Koristeći funkcije iz<br />

prvog dela zadatka napisati program koji na ekran ispisuje sve one linije teksta<br />

otkucanog na tastaturi koje sadrže tu reč.<br />

18

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!