1. Odkrij in odpravi napake v naslednjem programu :
struct Tocka{
int x;
int y;
};
void main() {
Tocka.x=2;
Tocka.y=3;
cout<<Tock.x<<Tocka.y;
}
2. Dopolni spodnji program s klicem funkcij in dopisi zahtevano vsebino podprogramov tako, da globalno dolocata vrednost spremenljivk 'razdalja1' in 'razdalja2'.
struct Tocka{
int x;
int y;
};
Tocka t1,t2;
float razdalja1,razdalja2;
void main() {
t1.x=t2.x=2; t2.y=3; t1.y=7;
cout<<razdalja1;
cout<<razdalja2; }
void Razdalja1() // doloci razdaljo t1 do (4,5) { // in rezultat zapise v razdalja1 }
void Razdalja2() // doloci razdaljo t2 do (4,5) { // in rezultat zapise v razdalja2 }
3. Poizkusite določiti vrednost izrazov v komentarjih glavnega programa.
int izr(int i){return i*i;}
int izr(int i, int j){return i*j+i+j;}
int izr(char i, int j){return (i-48)*j-5;}
int izr(char i,char j){return (i-48)*(j-48);}
void main()
{ int a,b,c=1;
char d,e,f='9';
int rez;
a=3; b=c*2; e='7'-3; d=f-=1;
//rez=izr(a) //rez=izr(d,e) //rez=izr(f,c) //rez=izr(e);
}
4. Pojasnite delovanje spodnje funkcije! Demonstrirajte delovanje na poljubnem primeru !
int test ( char *j ) {
for (int i=0;*j++!='\0';i++); return i;
}
5. Pojasnite pomen naslednjih deklaracij :
a.) float *polje;
b.) int &p=*polje;
c.) char (*a)();
d.) char *k="neki";
e.) float f,fff();
6. Napišite podprogram, ki iz danega niza zbriše določeno število znakov, začenši na izbrani poziciji. Prototip funkcije je podan :
void Del(char *niz, int pozicija, int koliko);
7. Pojasnite pojem rekurzije. Opišite njene dobre in slabe strani. Kdaj jo je smiselno uporabiti ? Pojasni delovanje mehanizma rekurzije na poljubnem podprogramu !
8. Realizirajte podprogram, ki v podanem številu tipa long zamenja vrstni red cifer :
long Zamenjaj(long n); Zamenjaj(123456)-->654321
9. Kaj izpiše naslednje zaporedje ukazov ?
int i,j;
char polje[16];
for (i=0,j=sizeof(polje);j>++i;
polje[i]=(i+j)/2+64,polje[j]=j+64);
for (i=0;i<sizeof(polje);i++)
cout << polje[i] << ' ';
10.Realizirajte ponavljanje z uporabo while konstrukta !
int i,j;
char polje[16];
for (i=0,j=sizeof(polje);j>++i;
polje[i]=(i+j)/2+64,polje[j]=j+64);
for (i=0;i<sizeof(polje);i++) cout << polje[i] << ' ';
11.Kakšno vrednost vrne podprogram, če je klican s parametroma 13.35 in 12.64 ?
float Vrni(int a, int b) { return ( a+b ); }
12.Dana je funkcija F, s katero je podan splošni člen zaporedja. Napiši podprogram, ki izračuna vrednost funkcije za poljuben 'n'. Robne pogoje zaporedja definirajte poljubno!
Fn := F1 + ( Fn-1 + Fn-2) * 0.8
13.Kakšne so vrednosti spremenljivke a oz. k po izvršitvi naslednjih stavkov?
int i,k;
float a;
a) a=5; a+=5; // a = ?
b) a=5; i=3; a%=i // a = ?
c) a=5; a>>2; // a= ?
d) a=5; i=3; a=/3; // a= ?
e) i=3; k=5; k+=i++; // k= ?
f) i=3; k=5; k/=++i; // k= ?
14.Napišite program, ki prebere celo število poljubne dolžine in vrne vsoto njegovih števk (cifer).
15.Napišite program, ki iz vhodne datoteke vhod.txt, ki vsebuje
poljubno besedilo, tvori datoteko izhod.txt z enakim besedilom, le da je preoblikovano na naslednji način:vsi samoglasniki so zamenjani z znakom * in vse besede daljše od 10 znakov so zamenjane z zanki - minus.
16.Napišite program, ki bo dvojiško število poljubne dolžine pretvoril v desetiški ekvivalent!
17.Napišite program, ki bo prebral n števil in jih izpisal v obratnem vrstnem redu na način, kot je prikazano na spodnjem primeru izpisa. Na koncu naj izpiše tudi vsoto teh števil. Rešitev naj bo izdelana z uporabo rekurzivne funkcije in brez uporabe polj.
Primer delovanja za n=3:
Koliko števil bos vpisal: 3 Vpisi 1. število: 5
Vpisi 2. število: 12 Vpisi 3. število: 7
Števila v obratnem vrstnem redu so:
3. število je 7 2. število je 12 1. število je 5 Vsota števil je 24
18.Napišite razred Kocka tako, da bo izpeljan iz razreda Kvadrat.
Razreda naj poleg svojih podatkov vsebujeta še privzeti konstruktor, metode za postavitev vrednosti podatkov in metode za izračun
površine, obsega in volumna.
19.Napišite program, ki vhodno tekstovno datoteko prepiše v izhodno.
V izhodni datoteki lahko zaporedoma nastopijo največ trije enaki znaki.
20.Sestavite razred denarnica, ki bo omogočal naslednje operacije: dvig, vlogo in ugotavljanje stanja. Začetna vrednost se naj postavi s
konstruktorjem.
21.Napišite program, ki bo prebral besedilo poljubne dolžine in za vsako veliko črko izpisal kolikokrat se ponovi v besedilu.
22.Kaj izpiše naslednji program?
#include <iostream.h>
void main () {
char prvi[] = "to je test";
char drugi[] = "to je test";
char tretji[] = {'a', '\0'};
cout << "1: " << *(prvi+1) << endl;
cout << "2: " << ++*(prvi) << endl;
cout << "3: " << prvi << endl;
cout << "4: " << char((prvi[1]+1)) << endl;
cout << "5: " << (++prvi[1]) << endl;
cout << "6: " << &*prvi << endl;
drugi[4] = tretji[0]; cout << "7: " << drugi << endl;
drugi[4] = tretji[1]; cout << "8: " << drugi << endl;
cout << "9: " << *tretji << endl;
if ('h' && 0 )
cout<<"10: tu"<<endl;
else
cout<<"10: tam"<<endl;
}
23.Napišite program, ki bo prebral naravno število n in izpisal vsa naravna števila med 1 in 1000, za katera je vsota cifer enaka n. Na primer, če je vrednost n enaka 4, bo program izpisal števila 4, 13, 22, 31, 40, 103, ... 400.
24.Napišite program, ki bo izračunal koliko škatel keramičnih ploščic bomo potrebovali za pokritje tal prostora s podano dolžino in širino.
O ploščicah imamo naslednje podatke: dolžina in širina ploščice ter število ploščic v posamezni škatli. Razmik med ploščicami pri
polaganju in izgube pri rezanju so upoštevane v 15% izmetu.