Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

Mira Nikoli

Sadraj:
STRINGOVI
STRUKTURE

Zbirka reenih
zadataka
iz
programskog
++
jezika C i C
3. DEO

TEKSTUALNE DATOTEKE
BINARNE DATOTEKE

Mira Nikoli
2. Program koji ispisuje tabelu ASCII karaktera u 19 redova I 5 kolona,
pocev od znaka blanko

STRINGOVI
1. Program koji ispisuje mala slova engleske abecede
(C I C++ varijanta)
#include <stdio.h>
#include <conio.h>
void main()
{
char t[30];
int i,n;
clrscr();
printf("\nAbeceda:\n\n");
for (i=0;i<26;i++)
t[i]='a'+i;
t[26]='\0';
puts(t);
getch();
}

#include <stdio.h>
#include <conio.h>
void main()
{
char c;
int i;
clrscr();
printf("\nTablica ASCII kodova\n\n");
for (c=' ';c<' '+19;c++)
{
for (i=0;i<95;i+=19)
printf("%3d %c
",c+i,c+i);
putchar('\n');
}
}

#include <iostream.h>
#include <stdio.h>
#include <conio.h>

#include <iostream.h>
#include <conio.h>
#include <iomanip.h>

void main()
{
char t[30];
int i,n;
clrscr();
cout<<endl<<"Abeceda:"<<endl;
for (i=0;i<26;i++)
t[i]='a'+i;
t[26]='\0';
puts(t);
getch();
}

void main()
{
char c;
int i;
clrscr();
cout<<endl<<"Tablica ASCII kodova"<<endl<<endl;
for (c=' ';c<' '+19;c++)
{
for (i=0;i<5;i++)
cout<<setw(6)<<c+19*i<<" "<<char(c+19*i);
cout<<endl;
}
getch();
}

Abeceda:
abcdefghijklmnopqrstuvwxyz

3. Napisati program koji e uitati string i spisati ga unatrake.


#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(void)
{
int i;
char str[50];
/*String je niz karaktera*/
clrscr();
printf("\nProgram pise string unatraske\n");
printf("\nUnesite string: \n");
gets(str);
printf("\nOvaj string unatraske glasi: \n");
for (i=strlen(str);i>=0;i--)
printf("%c",str[i]);
}
4. Napisati program koji e uitati string i ispisati koliko puta se odredjeni
karakter pojavljuje u tom stringu
#include <stdio.h>
#include <conio.h>
#include <string.h>
int broj_slovox(char x, char s[])
{ int i,br=0;
for (i=0;i<strlen(s);i++)
if (s[i]==x) br++;
return br;
}
void main(void)
{
char x,str[50];
clrscr();
printf("\nProgram broji pojavljivanje nekog slova u stringu\n");
printf("\nUnesite string: \n");
gets(str);
printf("\nUnesite slovo: ");
scanf("%c",&x);
printf("Slovo '%c' se u stringu pojavljuje %d puta",x,broj_slovox(x,str));
}

Zbirka reenih zadataka iz C jezika trei deo


5. Napisati program koji e uitati string i ispisati koliko u njemu ima
tacaka, reseno preko pokazivaca.
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(void)
{
char s[80],*p;
int brtacaka=0;
clrscr();
cout<<endl<<"Ucitajte neki string,"<<endl;
cout<<"izbrojace koliko u njemu ima tacaka"<<endl<<endl;
gets(s);
for (p=s;p<s+strlen(s);p++)
if(*p=='.')
brtacaka++;
cout<<"ima "<<brtacaka<<" tacaka";
getch();
}
6. Napisati program koji sva slova u stringu prebacuje u velika (mala).
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

//U velika:

void main(void)
{ int i;
char str[60];
clrscr();
cout<<endl<<"Program prebacuje sva slova stringa u velika"<<endl;
cout<<endl<<"Unesite string: "<<endl;
gets(str);
cout<<endl<<endl;
for (i=0;i<strlen(str);i++)
if islower(str[i]) str[i]-=32;
cout<<endl<<"Novi string glasi "<<endl;
puts(str);
getch();
}

Mira Nikoli
U mala (razlikuje se samo for petlja):
for (i=0;i<strlen(str);i++)
if isupper(str[i]) str[i]+=32;
ili, upotrebom funkcije tolower:
for (i=0;i<strlen(str);i++)
str[i]=tolower(str[i]);

7. Napisati program koji odreduje broj slova, cifara i ostalih karaktera u


stringu.
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
void main(void)
{
int i,brslova=0,brcifara=0,brostalih=0;
char str[60];
clrscr();

8. Napisati program sa funkcijom i pokazivaima koji kopira novi string


preko starog
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
void strkopi(char *s, char *s1)
//postoji ista funkcija strcpy u biblioteci string.h
{
while((*s!='\0' || *s1)!='\0')
{
*s=*s1;
s++;
s1++;
}
}
void main(void)
{
char str1[25], str2[25];
clrscr();
cout<<endl<<"Program kopira string preko starog stringa "<<endl;
cout<<endl<<"Unesite prvi string: "<<endl;
gets(str1);

cout<<endl<<"Program broji karaktere u stringu"<<endl<<endl;


cout<<endl<<"Unesite string: "<<endl;
gets(str);
cout<<endl<<endl;
for (i=0;i<strlen(str);i++)
if isalpha(str[i]) brslova++;
else if isalnum(str[i])
brcifara++;
else brostalih++;
cout<<endl<<"slova ima "<<brslova<<endl;
cout<<endl<<"cifara ima "<<brcifara<<endl;
cout<<endl<<"ostalih znakova ima "<<brostalih<<endl;
}

cout<<endl<<"Unesite drugi string: "<<endl;


gets(str2);
strkopi(str1,str2);
cout<<endl<<"Novi string,drugi kopiran preko prvog: "<<endl;
puts(str1);
getch();
}

Zbirka reenih zadataka iz C jezika trei deo


o
stringu se pristupa preko pokazivaa, koristi se funkcija za
kopiranje strcpy

9. Napisati program koji brie deo stringa u odreenoj duini od zadate


pozicije.
o

stringu se pristupa preko indeksa

#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
void main(void)
{
int i,duz,poz;
char str1[75];

#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
void main(void)
{
int duz,poz;
char str1[75],*p;
clrscr();
cout<<endl<<"Program brise deo stringa ";
cout<<"u odredjenoj duzini posle neke pozicije "<<endl;

clrscr();
cout<<endl<<"Program brise deo stringa ";
cout<<"u odredjenoj duzini posle neke pozicije "<<endl;

cout<<endl<<"Unesite string: "<<endl;


gets(str1);

cout<<endl<<"Unesite string: "<<endl;


gets(str1);

cout<<endl<<"Unesite duzinu koju cete brisati: "<<endl;


cin>>duz;

cout<<endl<<"Unesite duzinu koju cete brisati: "<<endl;


cin>>duz;

cout<<endl<<"Unesite poziciju 1,2,... : "<<endl;


cin>>poz;

cout<<endl<<"Unesite poziciju 1,2,... : "<<endl;


cin>>poz;

p=str1+poz;
strcpy(p,p+duz);

//pozicioniramo se na zeljeni polozaj


//kopira se krajnji deo od te pozicije preko stringa

cout<<endl<<"Novi string, ciji je deo izbrisan: "<<endl;


puts(str1);
getch();

for (i=poz;i<strlen(str1)-duz;i++)
str1[i] = str1[i+duz];
str1[strlen(str1)-duz]='\0'; //kraj novog stringa
}
cout<<endl<<"Novi string, ciji je deo izbrisan: "<<endl;
puts(str1);
getch();
}

Mira Nikoli
10. Napisati program koji u string ubacuje novi string na zadatu poziciju.
o

o
stringu se pristupa preko pokazivaa, koristi se funkcija za
kopiranje strcpy

stringu se pristupa preko indeksa


#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>

#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>

void main(void)
{
int poz;
char str1[50], str2[25], struk[75],*p;

void main(void)
{
int i,poz;
char str1[50], str2[25], struk[75];

clrscr();
cout<<endl<<"Program ubacuje drugi string ";
cout<<"u stari string posle neke pozicije "<<endl;

clrscr();
cout<<endl<<"Program ubacuje drugi string ";
cout<<"u stari string posle neke pozicije "<<endl;

cout<<endl<<"Unesite prvi string: "<<endl;


gets(str1);
cout<<endl<<"Unesite drugi string: "<<endl;
gets(str2);

cout<<endl<<"Unesite prvi string: "<<endl;


gets(str1);
cout<<endl<<"Unesite drugi string: "<<endl;
gets(str2);

cout<<endl<<"Unesite poziciju 1,2,... : "<<endl;


cin>>poz;

cout<<endl<<"Unesite poziciju 1,2,... : "<<endl;


cin>>poz;

struk = str1;
p=struk+poz;
//struk se postavlja na poziciju
*p='\0';
//odseca se novi string struk pre spajanja sa str2

for (i=0;i<poz;i++)
struk[i] = str1[i];
struk[poz]='\0'; //zavrsimo novi string pre operacije spajanja sa str2
strcat(struk,str2);

strcat(struk,str2);

p=str1;
strcpy(p,p+poz);
strcat(struk,*p); //dodaje se desni ostatak str1 na struk

//dodaje se str2 na struk

for (i=poz;i<strlen(str1);i++)
struk[i+strlen(str2)] = str1[i];
struk[strlen(str1)+strlen(str2)+1]='\0';

cout<<endl<<"Novi string,drugi unet u prvi: "<<endl;


puts(struk);
getch();

//kraj novog stringa struk

cout<<endl<<"Novi string,drugi unet u prvi: "<<endl;


puts(struk);
getch();

//dodaje se str2 na struk

Zbirka reenih zadataka iz C jezika trei deo


for (p=s;p<s;p++)
if(*p!='.')
{
t=s;
t++;
}
*p='\0';
puts(t);

11. Napisati program koji iz stringa izbacuje sve tacke.


a) Pristupanje stringu preko indeksa:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(void)
{
char s[80];
clrscr();
cout<<endl<<"Ucitajte neki string,"<<endl;
cout<<"iz njega ce se izbaciti sve tacke"<<endl<<endl;
gets(s);
for (i=j=0;i<strlen(s);i++)
if(s[i]!='.')
{
s[j]=s[i];
j++;
}
s[j]='\0';
puts(s);
getch();
}

c) Pristupanje stringu preko pokazivaca, bez kreiranja novog stringa t,


jer se koristi funkcija strcpy:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(void)
{
char s[80],*p;
clrscr();
cout<<endl<<"Ucitajte neki string,"<<endl;
cout<<"iz njega ce se izbaciti sve tacke"<<endl<<endl;
gets(s);

b) Pristupanje stringu preko pokazivaca, sa kreiranjem novog stringa t:

for (p=s;p<s+strlen(s);p++)
while(*p=='.')
strcpy(p,p+1);
*p='\0';
puts(s);
getch();

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(void)
{
char s[80],t[80],*p;
int i,j;
clrscr();
cout<<endl<<"Ucitajte neki string,"<<endl;
cout<<"iz njega ce se izbaciti sve tacke"<<endl<<endl;

//ako ima vise uzastopnih tacaka


//proguta jedan znak

gets(s);

Mira Nikoli
13. Napisati program koji odreduje broj reci u stringu i duzinu reci
maksimalne duzine.

12. Napisati program koji iz stringa izbacuje sve samoglasnike.


#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
int samoglasnik(char x)
{
switch (x)
{
case 'a': case 'A':
case 'e': case 'E':
case 'i': case 'I':
case 'o': case 'O':
case 'u': case 'U': return 1; break;
default: return 0; break;
}
}

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(void)
{
char s[80];
int i,brreci=0,duzreci=0,maxduz=0;
clrscr();
cout<<endl<<"Ucitajte neki string,"<<endl;
cout<<"odredice se broj reci i maksimalna duzina reci."<<endl<<endl;
gets(s);
for (i=0;i<=strlen(s);i++)
if(s[i]!=' '&& s[i]!='\0' ) //nije kraj reci ni stringa
duzreci++;
else
//naisli smo na blanko znak, kraj je jedne reci
{
if (duzreci>maxduz)
maxduz=duzreci;
if(duzreci!=0 || s[i]=='\0' ) brreci++;
duzreci=0;
//pocetna vrednost za sledecu rec
}
cout<<endl<<"Najduza rec ima "<<maxduz<<" karaktera.";
cout<<endl<<"Ima ukupno "<<brreci<<" reci.";

void main(void)
{
char s[80],*p;
clrscr();
cout<<endl<<"Ucitajte neki string,"<<endl;
cout<<"iz njega ce se izbaciti svi samoglasnici"<<endl<<endl;
gets(s);
for (p=s;p<s+strlen(s);p++)
while (samoglasnik(*p))
strcpy(p,p+1);
*p='\0';
puts(s);
getch();
}

getch();
}
Ucitajte neki string,
odredice se broj reci i maksimalna duzina reci.
Ova recenica je slozena, ona nije prosta.
Najduza rec ima 8 karaktera.
Ima ukupno 7 reci.

Zbirka reenih zadataka iz C jezika trei deo


14. Napisati program koji izdvaja sve reci iz stringa duzine 6-10 znakova i
ispisuje ih.
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(void)
{
char s[80],q[30][11];
int i,j,duzreci=0,brreci=0;
clrscr();
cout<<endl<<"Ucitajte neki string,"<<endl;
cout<<"izdvojice se sve reci duzine 6-10 znakova"<<endl<<endl;
gets(s);
for (i=0;i<=strlen(s);i++)
if(s[i]!=' '&& s[i]!='\0' ) //nije kraj reci ni stringa
duzreci++;
else
//naisli smo na blanko znak, kraj je jedne reci
{
if (duzreci>=6 && duzreci<=10)
{
for(j=0;j<duzreci;j++)
//formiramo string q
q[brreci][j]=s[i-duzreci+j];
q[brreci][duzreci]='\0';
puts(q[brreci]);
//i ispisemo ga
}
duzreci=0;
brreci++;
}
getch();
}

Sledee zadatke uradi za vebu:


Program koji spaja dva stringa u jedan.
Program koji izdvaja rei sa parnim brojem slova.
Program koji za svaku re u stringu ispisuje koliko slova sadri.
Program koji brie viestruke blanko znake u stringu.
Program koji svako slovo na poetku rei u stringu prebacuje u veliko
(Sentence Case)
Program koji ispisuje re minimalne duine.
Program ekavica-ijekavica koji umesto slova e u string ubacuje ije ili obrnuto.
Program find-replace koji jedan podstring u velikom stringu zamenjuje drugim.

Ucitajte neki string,


izdvojice se sve reci duzine 6-10 znakova
Ovaj program izdvojice sve reci u zeljenom opsegu.
program
izdvojice
zeljenom
opsegu.

Mira Nikoli

STRUKTURE
15.

Program koji obavlja raunske opreracije sa kompleksnim brojevima


(k.b. je definisan kao struktura)

#include <iostream.h>
#include<conio.h>
typedef struct{
int re;
int im;
}Tkompleks;

// nas novi tip

Tkompleks ucitaj(Tkompleks z1);


Tkompleks saberi(Tkompleks z1, Tkompleks z2);
Tkompleks oduzmi(Tkompleks z1, Tkompleks z2);
Tkompleks mnozi(Tkompleks z1, Tkompleks z2);
void main(void)
{
Tkompleks z1,z2,rez;
clrscr();
cout<<endl<<"Operacije sa kompleksnim brojevima "<<endl;
z1=ucitaj(z1);
z2=ucitaj(z2);
cout<<"Zbir dva kompleksna broja je "<<endl;
rez=saberi(z1,z2);
cout<<endl<<(<< z1.re<<+ i<<z1.im<<) + (<<z2.re<<+ i<<z2.im<<) = ;
cout<< rez.re<<+ i<<rez.im<<endl;
cout<<"Razlika dva kompleksna broja je "<<endl;
rez=oduzmi(z1,z2);
cout<<endl<<(<< z1.re<<+ i<<z1.im<<) (<<z2.re<<+ i<<z2.im<<) = ;
cout<< rez.re<<+ i<<rez.im<<endl;
cout<<"Proizvod dva kompleksna broja je "<<endl;
rez=mnozi(z1,z2);
cout<<endl<<(<< z1.re<<+ i<<z1.im<<) * (<<z2.re<<+ i<<z2.im<<) = ;
cout<< rez.re<<+ i<<rez.im<<endl;
}

10

Tkompleks ucitaj (Tkompleks C)


{
cout<<endl<<"Re(z)=";
cin>>C.re;
cout<<endl<<"Im(z)=";
cin>>C.im;
return C;
}
Tkompleks saberi(Tkompleks z1,Tkompleks z2)
{
Tkompleks rez;
rez.re=z1.re+z2.re;
rez.im=z1.im+z2.im;
return rez;
}
Tkompleks oduzmi (Tkompleks z1,Tkompleks z2)
{
Tkompleks rez;
rez.re=z1.re-z2.re;
rez.im=z1.im-z2.im;
return rez;
}
Tkompleks mnozi (Tkompleks z1,Tkompleks z2)
{
Tkompleks rez;
rez.re=z1.re*z2.re-z1.im*z2.im;
rez.im=z1.re*z2.im+z1.im*z2.re;
return rez;
}
16. Program koji obavlja rauna rastojanje izmedju 2 tacke, pre i posle
pomeranja jedne (tacka u Dekartovoj ravni je definisana kao struktura)
#include <iostream.h>
#include <conio.h>
#include <math.h>
typedef struct {
float x;
float y;
}Tacka;

Zbirka reenih zadataka iz C jezika trei deo


float dist(Tacka t1, Tacka t2)
{
return sqrt(pow(t1.x-t2.x,2)+pow(t1.y-t2.y,2));
}
Tacka transl(Tacka t1,float dx, float dy)
{
Tacka rez;
rez.x=t1.x+dx;
rez.y=t1.y+dy;
return rez;
}
void pozicija(Tacka t1)
{
cout<<endl<<"Koordinate ove tacke su:"<<endl;
cout<<"x="<<t1.x<<"y="<<t1.y<<endl;
}
void main (void)
{
float dx,dy,d;
Tacka t1,t2;
clrscr();
cout<<"Program racuna rastojanje izmedju 2 tacke i pomera ih"<<endl;
cout<<endl<<"Unesite koordinate tacke 1:"<<endl;
cin>>t1.x>>t1.y;
// odjednom i x i y !!
cout<<endl<<"Unesite koordinate tacke 2:"<<endl;
cin>>t2.x>>t2.y;
d=dist(t1,t2);
cout<<endl<<"Rastojanje ovih tacaka je "<<d;
cout<<endl<<endl<<"Unesite pomeraj za 1. tacku:"<<endl;
cin>>dx>>dy;
t1=transl(t1, dx, dy);
//pomeri se tacka 1
pozicija(t1);
d=dist(t1,t2);
cout<<endl<<"Sada je rastojanje ovih tacaka "<<d;
getch();

typedef struct {
float x;
float y;
float z;
}Tacka;
float dist(Tacka t1, Tacka t2)
{
return sqrt(pow(t1.x-t2.x,2)+pow(t1.y-t2.y,2))+pow(t1.z-t2.z,2);
int moze_tro(float a, float b, float c)
{
return a<b+c && b<c+a && c<a+b; }
float obim(float a, float b, float c)
{
return a+b+c;
}
float povrs(float a, float b, float c)
{
float s=(a+b+c)/2;
return sqrt(s*(s-a)*(s-b)*(s-c));

void main (void)


{
float a,b,c;
Tacka t1,t2,t3;
clrscr();
cout<<"Program racuna obim i povrsinu trougla"<<endl;
cout<<"ako su date koordinate 3 temena "<<endl;
cout<<endl<<"Unesite koordinate tacke 1:"<<endl;
cin>>t1.x>>t1.y>>t1.z;
// odjednom i x i y i z!!
cout<<endl<<"Unesite koordinate tacke 2:"<<endl;
cin>>t2.x>>t2.y>>t2.z;
cout<<endl<<"Unesite koordinate tacke 3:"<<endl;
cin>>t3.x>>t3.y>>t3.z;
a=dist(t1,t2);
b=dist(t1,t3);
c=dist(t3,t2);
if (moze_tro(a,b,c))
{
cout<<endl<<"Obim je "<<obim(a,b,c);
cout<<endl<<"Povrsina je "<<povrs(a,b,c)<<endl;
}
else cout<<endl<<"Ove 3 tacke ne obrazuju trougao";
getch();

}
17. Program koji obavlja rauna obim i povrsinu trougla definisanog pomocu 3
tacke u prostoru (tacka u Dekartovom prostoru je definisana kao struktura)
#include <iostream.h>
#include <conio.h>
#include <math.h>

11

Mira Nikoli
18. Program koji uitava i tampa niz slogova za koarkae (slogovima se
pristupa preko indeksa)
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
struct licnost
{
char ime[20];
unsigned visina;
unsigned br_kos;
};
void ucitaj(struct licnost *osoba)
{
cout<<"unesite ime kosarkasa ";
gets(osoba ->ime);
//osoba->ime isto je sto i (*osoba).ime
cout<<"unesite visinu te osobe ";
cin>>osoba ->visina;
cout<<"unesi broj koseva ";
cin>>osoba ->br_kos;
}
void main(void)
{
int n,i;
struct licnost osoba[8];
clrscr();
cout<<"unesi broj kosarkasa <8: "; cin>>n;
for(i=0;i<n;i++)
{
cout<<endl<<"unesi podatke za "<<i+1<<".osobu"<<endl;
ucitaj(& osoba[i]);
}
cout<<endl<<endl<<"sledece osobe su u timu:"<<endl<<endl;
for(i=0;i<n;i++)
{
cout<<osoba[i].ime<<", visina: "<<osoba[i].visina;
cout<<"cm, br_kos:"<<osoba[i].br_kos<<endl;
}
getch();
}
19.

12

Program koji uitava niz slogova za koarkae i tampa podatke za


najefikasnijeg (slogovima se pristupa preko pokazivaa)

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
typedef struct
{ char ime [20];
char klub [10];
int broj_koseva;
}Kosarkas;
void ucitaj(Kosarkas *osoba)
{
cout<<"unesite ime osobe ";
gets(osoba->ime);
cout<<"unesite klub osobe ";
gets(osoba->klub);
cout<<"unesi broj koseva ";
cin>>osoba ->broj_koseva;
}
void main(void)
{
int n,max_koseva=0;
Kosarkas osoba [30],*pok_kos,najbolji;
clrscr();
cout<<"unesi broj kosarkasa <30: ";
cin>>n;
for(pok_kos=osoba;pok_kos<osoba+n;pok_kos++)
{
cout<<endl<<"unesi podatke za sledecu osobu"<<endl;
ucitaj(pok_kos);
if(pok_kos->broj_koseva>max_koseva)
{
najbolji=*pok_kos;
max_koseva=pok_kos->broj_koseva;
}
}
cout<<endl<<endl<<"Igrali su sledeci kosarkasi:"<<endl;
for(pok_kos=osoba;pok_kos<osoba+n;pok_kos++)
{
cout<<pok_kos->ime<<" "<<pok_kos->klub;
cout<<" broj koseva: "<<pok_kos->broj_koseva<<endl;
}
cout<<"Najvise koseva postigao je "<<najbolji.ime<<", igrac iz kluba ";
cout<<najbolji.klub<<"koji je postigao "<<najbolji.broj_koseva<<" koseva";
}

Zbirka reenih zadataka iz C jezika trei deo

TEKSTUALNE DATOTEKE

20.

Program koji u postojeu tekstualnu datoteku unosi novi red teksta (ako
datoteka ne postoji, on kreira novu)

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
void main(void)
{
FILE *fpok;
char tekst[256], nazivdat[16]; // sadrzina 1 reda datoteke
clrscr();
cout<<"Unesite naziv datoteke ";
gets(nazivdat);
strcat(nazivdat,".txt");
// otvara se datoteka
// ako ne postoji, kreirace se nova
cout<<"Unesite novi red teksta u datoteku ";
gets(tekst);
fputs(tekst,fpok);
// unos reda teksta
fputs("\n",fpok);
// prelazi se u novi red, za sledeci upis
fclose(fpok);

void main(void)
{
FILE *fpok;
char tekst[256],Max[256];
//sadrzina 1 reda datoteke i max red
int max=0;
//duzina najduzeg reda
clrscr();
fpok=fopen("knjiga.txt","r");
//otvara se datoteka
if (fpok==NULL)
{
cout<<"greska";
return;
}
//napomena: fgets cita i kraj linije!
while (fgets(tekst,256,fpok)!=NULL)
if(strlen(tekst)>max)
{
max=strlen(tekst);
strcpy(Max,tekst);
}
cout<<"Najduzi red u datoteci je "<<endl<<Max<<endl;
cout<<" i ima duzinu "<<max-1<<" slova";
//smanjujemo za 1 zbog \n
fclose(fpok);
getch();

fpok=fopen(nazivdat,"a");

//sadrzaj datoteke knjiga.txt

//sadrzaj datoteke nova.txt


//
prvi red
//
drugi red

mira nikolic
djura
dunja
ognjen torbic
aki kuca

21. Program koji u postojeoj tekstualnoj datoteci kjiga.txt pronalazi


najdui red i broji koliko ima slova
#include<stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>

//rezultat rada programa je sledeci ispis


Najduzi red u datoteci je
mira nikolic
i ima duzinu 12 slova

13

Mira Nikoli
22. Program koji u postojeoj tekstualnoj datoteci knjiga.txt broji redove
(ako datoteka ne postoji, ispie poruku greska)
#include<stdio.h>
#include <conio.h>
#include <iostream.h>
void main(void)
{
FILE *fpok;
char tekst[256];
//sadrzina 1 reda datoteke
int broj=0;
//broj redova u datoteci

void main(void)
{
FILE *fin,*fout;
char slovo,tekst[256]; // sadrzina 1 reda datoteke
clrscr();
// ovaj program sifruje ulaznu datoteku
// tako sto svako slovo uvecava za 1,
// a, "z" vraca u "a"
fin=fopen("ulaz.txt","r"); // otvara se ulazna datoteka
fout=fopen("izlaz.txt","w"); // otvara se ulazna datoteka
while ((slovo=getc(fin))!=EOF)
{
if (isalpha(slovo))
{
slovo=tolower(slovo);
if (slovo>='a' && slovo<'z')
slovo++;
else slovo='a';
}
putc(slovo,fout);
}

clrscr();
fpok=fopen("knjiga.txt","r");
//otvara se datoteka
if (fpok==NULL)
{
cout<<"greska";
return;
}
while (fgets(tekst,256,fpok)!=NULL)
broj++;
cout<<"Ova tekstuelna datoteka ima "<<broj<<" linija";
fclose(fpok);
getch();

fclose(fin);
fclose(fout);

}
//sadrzaj datoteke knjiga.txt
//
mira
//
djura
//
dunja
//
ognjen
//
aki

}
//sadrzaj datoteke ulaz.txt
Ovo je tajni dokument.
Napravicemo tajanstvenu sifru!
//sadrzaj datoteke izlaz.txt

23. Program koji postojecu tekstualnu datoteku ulaz.txt sifruje tako sto
svako slovo uvecava na sledece, a z pretvara u a
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
#include <ctype.h>

14

pwp kf ubkoj eplvnfou.


obqsbwjdfnp ubkbotuwfov tjgsv!

24. Program koji kreira tekstualnu datoteku brojevi.txt iji sadraj su celi
brojevi. U svakom redu datoteke nalazi se jedan broj.
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
void main(void)
{
FILE *fpok;
int broj;
// sadrzina 1 reda datoteke
char kraj;
clrscr();
fpok=fopen("brojevi.txt","a"); // otvara se datoteka
// ako ne postoji, kreirace se nova
do{
cout<<"Unesite novi broj u datoteku ";
cin>>broj;
fprintf(fpok,"%d\n",broj);
cout<<"Da li je kraj unosa? Unesite d-> ";
cin>>kraj;
}while (kraj!='d'&& kraj!='D');
fclose(fpok);
5
}
4
6
Unesite novi broj u datoteku 56
22
Da li je kraj unosa? Unesite d-> n
56
Unesite novi broj u datoteku 12
12
Da li je kraj unosa? Unesite d->

25. Program koji ita tekstualnu datoteku brojevi.txt i ispisuje na ekranu


njen sadraj. U svakom redu datoteke nalazi se jedan broj.
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>

Zbirka reenih zadataka iz C jezika trei deo


void main(void)
{
FILE *fpok;
int broj;
// sadrzina 1 reda datoteke
clrscr();
fpok=fopen("brojevi.txt","r"); // otvara se datoteka
cout<<"U datoteku su uneti brojevi "<<endl;
while (fscanf(fpok,"%d",&broj)!=EOF)
cout<<broj<<endl;
fclose(fpok);
getch();
}

U datoteku su uneti brojevi


5
4
6
22
56
12

26. Program koji kreira tekstualnu datoteku broj.txt iji sadraj su celi
brojevi. Svi brojevi su u jednom redu, razdvojeni praznim mestom.
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
void main(void)
{
FILE *fpok;
int broj;
// sadrzina 1 reda datoteke
char kraj;
clrscr();
fpok=fopen("broj.txt","a"); // otvara se datoteka
do{
cout<<"Unesite novi broj u datoteku ";
cin>>broj;
fprintf(fpok," %d",broj);
cout<<"Da li je kraj unosa? Unesite d-> ";
cin>>kraj;
}while (kraj!='d'&& kraj!='D');
fclose(fpok);
}

12 3 -67 23

15

Mira Nikoli
27. Program koji ita tekstualnu datoteku broj.txt i ispisuje na ekranu njen
sadraj. Svi brojevi su u jednom redu, razdvojeni praznim mestom.
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>

void main(void)
{
FILE *fpok;
Kos kosarkas;
char kraj;
clrscr();

fpok=fopen("slogovi.txt","a"); // otvara se datoteka


// ako ne postoji, kreirace se nova
do{
cout<<"Unesite ime i prezime kosarkasa ";
gets(kosarkas.ime);
fprintf(fpok,"%s\t",kosarkas.ime);

void main(void)
{
FILE *fpok;
int broj;
clrscr();

cout<<"Unesite klub kosarkasa ";


gets(kosarkas.klub);
fprintf(fpok,"%s\t",kosarkas.klub);

fpok=fopen("broj.txt","r"); // otvara se datoteka


cout<<"U datoteku su uneti brojevi "<<endl;
while (fscanf(fpok,"%d",&broj)!=EOF)
cout<<broj<<endl;
//na ekranu svaki broj u novom redu

// sadrzina 1 sloga datoteke

U datoteku su uneti brojevi


12
3
-67
23

cout<<"Unesite broj koseva kosarkasa ";


cin>>kosarkas.br_koseva;
fprintf(fpok,"%i\n",kosarkas.br_koseva);
cout<<"Da li je kraj unosa? Unesite d-> ";
cin>>kraj;
}while (kraj!='d'&& kraj!='D');

fclose(fpok);
getch();
}

fclose(fpok);
}
28. Program koji kreira tekstualnu datoteku slogovi.txt. Slog je u jednom
redu, razdvojeni praznim mestom.
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
typedef struct
{
char ime[30];
char klub[20];
int br_koseva;
}Kos;

16

Unesite ime i prezime kosarkasa petar petrovic


Unesite klub kosarkasa njegos
Unesite broj koseva kosarkasa 15
Da li je kraj unosa? Unesite d-> k
Unesite ime i prezime kosarkasa vlade divac
Unesite klub kosarkasa sakramento
Unesite broj koseva kosarkasa 55
Da li je kraj unosa? Unesite d-> d
ogi torbic
mira nikolic
dunja torbic
petar petrovic
vlade divac

sabac 23
zivinarnik
gimnazija
njegos 15
sakramento

12
33
55

Zbirka reenih zadataka iz C jezika trei deo


29. Program koji ita tekstualnu datoteku slogovi.txt i ispisuje na ekranu
njen sadraj. Svi podaci se ispisuju u jednom redu, razdvojeni
zarezima.

Program koji za uitano n kreira datoteku Fibonaijevih brojeva.

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
typedef struct
{
char ime[15];
char prezime[15];
char klub[20];
int br_koseva;
}Kos;
void main(void)
{
FILE *fpok;
Kos kosarkas;

Sledee zadatke uradi za vebu:

Program koji ifruje datoteku tako to sve samoglasnike A,E,I,O,U menja


ciframa 0,1,2,3,i 4.
Program koji u datoteci pronalazi i ispisuje re minimalne duine.
// mora se razdvojiti ime i prezime u dva stringa jer
// se citaju iz istog reda

U tekstualnoj datoteci je broj n koji predstavlja duinu niza, a u sledeem redu


su elementi niza. Proitaj ih i nai minimum niza.
Program koji kreira tekstuelnu datoteku ucenici.txt sa slogovima o uenicima
(ime i prezime, ocene iz 10 predmeta). Program koji kreira novu datoteku
odlicni.txt koja sadri imena i prosek odlinih uenika.

// sadrzina 1 reda datoteke

Program koji kreira tekstuelnu datoteku prasici.txt sa slogovima o prasiima


(redni broj, rasa, teina), a potom rauna ukupnu i prosenu teinu.

clrscr();
fpok=fopen("slogovi.txt","r");
cout<<"U datoteku su uneti kosarkasi "<<endl;
while(fscanf(fpok,"%s %s %s %d",&kosarkas.ime,&kosarkas.prezime,
&kosarkas.klub, &kosarkas.br_koseva)!=EOF)
cout<<kosarkas.ime<<" "<<kosarkas.prezime<<", "<<
kosarkas.klub<<", "<<kosarkas.br_koseva<<endl;
fclose(fpok);
getch();
}
U datoteku su uneti kosarkasi
ogi torbic, sabac, 23
mira nikolic, zivinarnik, 12
dunja torbic, gimnazija, 33
petar petrovic, njegos, 15
vlade divac, sakramento, 55

17

Mira Nikoli

BINARNE DATOTEKE

1. Program koji kreira binarnu datoteku celih brojeva (ako datoteka ne


postoji, on kreira novu)
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main (void)
{
FILE *pok;
int broj;
char odluka;
clrscr();
pok=fopen("brojevi.dat","a+b");
//ako se stavi w, svaki sledeci put ce prebrisati datoteku!
if (pok==NULL)
{
cout<<"greska";
}
do
//Unos podataka u datoteku
{
cout<<"novi broj:";
cin>>broj;
fwrite(&broj,sizeof(int),1,pok);
cout<<"jos unosa? d/n: ";
cin>>odluka;
} while(odluka!='n' && odluka!='N');
fclose(pok);
}

2. Program koji ita brojeve iz binarne datoteke


#include<stdio.h>
#include<iostream.h>
#include<conio.h>

18

void main (void)


{
FILE *pok;
int broj;
clrscr();
pok=fopen("brojevi.dat","r+b");
//Citanje brojeva iz datoteke
while(fread(&broj,sizeof(int),1,pok)!=NULL)
cout<<broj<<endl;
fclose(pok);
getch();
}

32
45
12
-67
44
123

3. Program koji iz binarne datoteke celih brojeva pristupa proizvoljnim


elementima i ispisuje ih na ekran
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main (void)
{
FILE *pok;
int broj;
clrscr();
pok=fopen("brojevi.dat","r+b");

32
45
12
-67
44
123

cout<<"Ispis 2. broja od pocetka datoteke <<endl;


fseek(pok,2,SEEK_SET);
fread(&broj,sizeof(int),1,pok);
cout<<broj<<endl;
//ispisuje 45
cout<<"Ovaj broj je na poziciji: "<<ftell(pok)<<endl<<endl; //poz=4
cout<<"Ispis 2. broja od tekuce pozicije <<endl;
fseek(pok,2,SEEK_CUR);
fread(&broj,sizeof(int),1,pok);
cout<<broj<<endl;
//ispisuje -67
cout<<"Ovaj broj je na poziciji: "<<ftell(pok)<<endl<<endl; //poz=8
cout<<"Ispis 4. broja od kraja datoteke <<endl;
fseek(pok,4,SEEK_END);
fread(&broj,sizeof(int),1,pok);
cout<<broj<<endl<<endl; //ispisuje 12

cout<<"Ispis prvog broja u datoteci <<endl;


rewind(pok);
fread(&broj,sizeof(int),1,pok);
cout<<broj<<endl;
//ispisuje 32
fclose(pok);
getch();

#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main (void)
{
FILE *pokdat;
int niz[20],n,*pok;

4. Program koji kreira binarnu datoteku celih brojeva u kojoj se nalazi


duina niza n i niz celih brojeva
o

Zbirka reenih zadataka iz C jezika trei deo


preko pokazivaca, jedan po jedan

pokdat=fopen("nizbrojeva.dat","w+b");
if (pokdat==NULL)
{
cout<<"greska";
}
//Unos podataka u datoteku
cout<<"Koliko ima elemenata u nizu? n= ",
cin>>n;
//unosi se duzina niza u datoteku
fwrite(&n,sizeof(int),1,pokdat);

odjednom ceo niz

#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main (void)
{
FILE *pokdat;
int niz[20],n,i;

cout<<"Unesite "<<n<<" elemenata niza:"<<endl;


//potom se unose elementi
for(pok=niz;pok<niz+n;pok++)
{
cin>>*pok;
fwrite(pok,sizeof(int),1,pokdat);
}
fclose(pokdat);

pokdat=fopen("nizbrojeva.dat","w+b");
if (pokdat==NULL)
{
cout<<"greska";
}
//Unos podataka u datoteku
cout<<"Koliko ima elemenata u nizu? n= ",
cin>>n;
//unosi se duzina niza u datoteku
fwrite(&n,sizeof(int),1,pokdat);
cout<<"Unesite "<<n<<" elemenata niza:"<<endl;
//potom se unose elementi
for(i=0;i<n;i++)
cin>>niz[i];
fwrite(niz,sizeof(int),n,pokdat);

Koliko ima elemenata u nizu? n= 4


Unesite n elemenata niza:
3
8
-2
1

fclose(pokdat);
}

19

Mira Nikoli
5. Program koji ita niz brojeva iz binarne datoteke
o

odjednom ceo niz

#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main (void)
{
FILE *pokdat;
int niz[20],n,i;
clrscr();
pokdat=fopen("nizbrojeva.dat","r+b");
fread(&n,sizeof(int),1,pokdat);
fread(&niz,sizeof(int),n,pokdat);
for (i=0;i<n;i++)
cout<<niz[i]<<"\t";

//Citanje brojeva iz datoteke

U datoteci ima 4 elementa niza


3
8
-2
1

6. Program koji unosi slogove u binarnu datoteku


#include<stdio.h>
#include<iostream.h>
#include<conio.h>
typedef struct
{
char ime[10];
char reg[10];
}Slog;
void main (void)
{
FILE *dat;
Slog osoba;
char odluka;
clrscr();

fclose(pokdat);
getch();

dat=fopen("auto.dat","a+b");
//ako se stavi w, svaki sledeci put ce prebrisati datoteku!
if (dat==NULL)
{
cout<<"greska";
}
//Unos podataka u datoteku
do
{
vlasnik:lazar
cout<<"vlasnik:";
registracija:45678
gets(osoba.ime);
jos unosa? d/n:
cout<<"registracija:";
gets(osoba.reg);
fwrite(&osoba,sizeof osoba,1,dat);
cout<<"jos unosa? d/n: ";
cin>>odluka;
} while(odluka!='n' && odluka!='N');

}
o

preko pokazivaca, jedan po jedan

#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main (void)
{
FILE *pokdat;
int niz[20],n,*pok;
clrscr();
pokdat=fopen("nizbrojeva.dat","r+b");
fread(&n,sizeof(int),1,pokdat);
//Citanje brojeva iz datoteke
pok=niz;
while(fread(pok,sizeof(int),1,pokdat)!=NULL)
cout<<*pok<<"\t";
fclose(pokdat);
getch();
}

20

fclose(dat);
}

Zbirka reenih zadataka iz C jezika trei deo


7. Program koji ita slogove iz binarne datoteke
#include<stdio.h>
#include<iostream.h>
#include<conio.h>

Sledee zadatke uradi za vebu:


Program koji za uitano n kreira binarnu datoteku Pitagorinih brojeva do n
(svaki slog sadri a,b,c; a2+ b2= c2). Program koji ita prethodnu datoteku.

typedef struct
{
char ime[10];
char reg[10];
}Slog;

Program koji u datoteci celih brojeva pronalazi i ispisuje minimalni broj.


U binarnoj datoteci su elementi niza. Proitaj ih i nai maksimum niza.
Program koji kreira binarnu datoteku ucenici.bin sa slogovima o uenicima
(ime i prezime, ocene iz 10 predmeta). Program koji kreira novu datoteku
odlicni.bin koja sadri imena i prosek odlinih uenika.

void main (void)


{
FILE *dat;
Slog osoba;

Program koji kreira binarnu datoteku pilici.txt sa slogovima o piliima (redni


broj, rasa, teina), a potom rauna ukupnu i prosenu teinu.

clrscr();
dat=fopen("auto.dat","r+b");
//Citanje podataka iz datoteke
while(fread(&osoba,sizeof osoba,1,dat)!=NULL);
{
cout<<"vlasnik: "<<osoba.ime<<endl;
cout<<"registracija: "<<osoba.reg<<endl<<endl;
}
fclose(dat);
}
vlasnik: petar
registracija: 21364
vlasnik: slavko
registracija: 11456
vlasnik: djuro
registracija: 12345
vlasnik: ogi
registracija: 12456

21

You might also like