Osnovi programiranja - vezbe - Alas
Osnovi programiranja - vezbe - Alas
Osnovi programiranja - vezbe - Alas
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