Professional Documents
Culture Documents
Zbirkac Treci Deo PDF
Zbirkac Treci Deo PDF
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
//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]);
#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;
p=str1+poz;
strcpy(p,p+duz);
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
#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;
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
for (i=poz;i<strlen(str1);i++)
struk[i+strlen(str2)] = str1[i];
struk[strlen(str1)+strlen(str2)+1]='\0';
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;
gets(s);
Mira Nikoli
13. Napisati program koji odreduje broj reci u stringu i duzinu reci
maksimalne duzine.
#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.
Mira Nikoli
STRUKTURE
15.
#include <iostream.h>
#include<conio.h>
typedef struct{
int re;
int im;
}Tkompleks;
10
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));
}
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
#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";
}
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");
mira nikolic
djura
dunja
ognjen torbic
aki kuca
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
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->
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();
void main(void)
{
FILE *fpok;
int broj;
clrscr();
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
sabac 23
zivinarnik
gimnazija
njegos 15
sakramento
12
33
55
#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;
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
18
32
45
12
-67
44
123
32
45
12
-67
44
123
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main (void)
{
FILE *pokdat;
int niz[20],n,*pok;
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);
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main (void)
{
FILE *pokdat;
int niz[20],n,i;
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);
fclose(pokdat);
}
19
Mira Nikoli
5. Program koji ita niz brojeva iz binarne datoteke
o
#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";
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
#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);
}
typedef struct
{
char ime[10];
char reg[10];
}Slog;
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