nedavno sam poceo uciti c++, a vec imam nekoliko problema/pitanja... Naime jedan frend mi je preporucio da c++ ucim iz ove knjige: Demistificirani C++...
Posto nikako nisam mogao pronaci sto znace ove naredbe u toj knjizi, nadam se da ce netko imati vremena da mi ih malo pojasni...
Ovo je nekoliko programa koje sam nasao na netu...
Code:
#include <iostream>
# include <stdio.h>
# include <stdlib.h>
using namespace std;
class vektor
{
private: int i;
private: int j;
private: int k;
friend int main(void);
friend int skalarni(vektor, vektor);
friend vektor vektorski(vektor, vektor);
friend int ispis(vektor, vektor);
};
int skalarni(vektor a, vektor b)
{
int s;
s = (a.i*b.i) + (a.j*b.j) + (a.k*b.k);
return s;
}
vektor vektorski(vektor a,vektor b)
{
vektor v;
v.i = (a.j*b.k) - (a.k*b.j);
v.j = (a.k*b.i) - (a.i*b.k);
v.k = (a.i*b.j) - (a.j*b.i);
return v;
}
int ispis(vektor a, vektor b)
{
vektor v;
printf("\n --> Skalarni produkt upisanih vektora je s = %d", skalarni(a, b) );
v = vektorski(a, b);
printf("\n --> Vektorski produkt upisanih vektora je v = (%d,%d,%d) \n\n ", v.i, v.j, v.k );
return 0;
}
int main(void)
{
vektor a, b;
printf(" --> Upis vektora a ! \n");
printf(" --> Upisi ax vektora a : ");
scanf("%d", &a.i);
printf(" --> Upisi ay vektora a : ");
scanf("%d", &a.j);
printf(" --> Upisi az vektora a : ");
scanf("%d", &a.k);
printf(" --> Upis vektora b ! \n");
printf(" --> Upisi bx vektora b : ");
scanf("%d", &b.i);
printf(" --> Upisi by vektora b : ");
scanf("%d", &b.j);
printf(" --> Upisi bz vektora b : ");
scanf("%d", &b.k);
ispis(a,b);
return 0;
}
#include <iostream>
# include <stdio.h>
# include <stdlib.h>
using namespace std;
class vektor
{
private: int i;
private: int j;
private: int k;
friend int main(void);
friend int skalarni(vektor, vektor);
friend vektor vektorski(vektor, vektor);
friend int ispis(vektor, vektor);
};
int skalarni(vektor a, vektor b)
{
int s;
s = (a.i*b.i) + (a.j*b.j) + (a.k*b.k);
return s;
}
vektor vektorski(vektor a,vektor b)
{
vektor v;
v.i = (a.j*b.k) - (a.k*b.j);
v.j = (a.k*b.i) - (a.i*b.k);
v.k = (a.i*b.j) - (a.j*b.i);
return v;
}
int ispis(vektor a, vektor b)
{
vektor v;
printf("\n --> Skalarni produkt upisanih vektora je s = %d", skalarni(a, b) );
v = vektorski(a, b);
printf("\n --> Vektorski produkt upisanih vektora je v = (%d,%d,%d) \n\n ", v.i, v.j, v.k );
return 0;
}
int main(void)
{
vektor a, b;
printf(" --> Upis vektora a ! \n");
printf(" --> Upisi ax vektora a : ");
scanf("%d", &a.i);
printf(" --> Upisi ay vektora a : ");
scanf("%d", &a.j);
printf(" --> Upisi az vektora a : ");
scanf("%d", &a.k);
printf(" --> Upis vektora b ! \n");
printf(" --> Upisi bx vektora b : ");
scanf("%d", &b.i);
printf(" --> Upisi by vektora b : ");
scanf("%d", &b.j);
printf(" --> Upisi bz vektora b : ");
scanf("%d", &b.k);
ispis(a,b);
return 0;
}
U ovome me zanima cemu sluzi naredbe:
Code:
using namespace std;
using namespace std;
Code:
friend int main(void);
friend int skalarni(vektor, vektor);
friend vektor vektorski(vektor, vektor);
friend int ispis(vektor, vektor);
friend int main(void);
friend int skalarni(vektor, vektor);
friend vektor vektorski(vektor, vektor);
friend int ispis(vektor, vektor);
Drugi program:
Code:
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
class Popis
{
private:
int brUcenika;
string *ListaUcenika;
public:
Popis ();
~Popis();
void ispis();
void dodaj();
void dodaj(string s);
void brisi();
};
Popis::Popis(): brUcenika(0) , ListaUcenika (new string[20]) {}
Popis::~Popis()
{
delete [] ListaUcenika;
}
void Popis::ispis(void)
{
int i;
if (brUcenika!=0)
{
cout << endl << "\n --> popis studenata: "<< endl;
for (i=0; i < brUcenika; i++)
cout << ListaUcenika[i] <<endl;
}
cout << "..." << endl;
}
void Popis::dodaj(void)
{
int i;
string ime,prezime,ucenik;
cout <<"\n --> ime: ";
cin>>ime;
cout <<"\n --> prezime: ";
cin>>prezime;
ucenik=ime+" "+prezime;
brUcenika++;
string* pomocni =new string[brUcenika];
for (i=0;i<brUcenika-1;i++)
{
pomocni[i]=ListaUcenika[i];
}
pomocni[brUcenika-1]=ucenik;
ListaUcenika=new string[brUcenika];
for (i=0;i<brUcenika;i++)
{
ListaUcenika[i]=pomocni[i];
}
delete [] pomocni;
cout << "\n --> Student je upisan."<< endl;
}
void Popis::dodaj(string ucenik)
{
int i;
brUcenika++;
string* pomocni =new string[brUcenika];
for (i=0;i<brUcenika-1;i++)
{
pomocni[i]=ListaUcenika[i];
}
pomocni[brUcenika-1]=ucenik;
ListaUcenika=new string[brUcenika];
for (i=0;i<brUcenika;i++)
{
ListaUcenika[i]=pomocni[i];
}
delete [] pomocni;
}
void Popis::brisi(void)
{
int i, flag=0;
string ime,prezime,ucenik;
cout <<"\n --> ime: ";
cin>>ime;
cout <<"\n --> prezime: ";
cin>>prezime;
ucenik=ime+" "+prezime;
for (i=0;i<brUcenika;i++)
{
if (ListaUcenika[i]==ucenik)
{
flag=1;
}
}
if(! flag)
{
cout << "\n --> Student nije naveden u bazi." << endl;
return;
}
flag=0;
brUcenika--;
string* pomocni=new string[brUcenika];
for (i=0;i<brUcenika;i++)
{
if (ListaUcenika[i]==ucenik)
{
flag=1;
}
if(flag)
{
pomocni[i]=ListaUcenika[i+1];
}
else
{
pomocni[i]=ListaUcenika[i];
}
}
ListaUcenika=new string[brUcenika];
for(i=0;i<brUcenika;i++)
ListaUcenika[i]=pomocni[i];
delete [] pomocni;
cout << "\n --> Student je obrisan." << endl;
}
int main()
{
Popis popis;
char izbor;
do
{
switch (izbor)
{
case '1': popis.ispis();
break;
case '2': popis.dodaj();
break;
case '3': popis.brisi();
break;
default:
break;
}
cout<<"\n --> 1. Ispis prisutnih studenata"<<endl;
cout<<"\n --> 2. Upis novog studenta"<<endl;
cout<<"\n --> 3. Brisanje studenta"<<endl;
cout<<"\n --> 4. Kraj"<<endl;
cout<<"\n --> Vas odabir : " ;
cin>>izbor;
}
while(izbor != '4');
return 0;
}
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
class Popis
{
private:
int brUcenika;
string *ListaUcenika;
public:
Popis ();
~Popis();
void ispis();
void dodaj();
void dodaj(string s);
void brisi();
};
Popis::Popis(): brUcenika(0) , ListaUcenika (new string[20]) {}
Popis::~Popis()
{
delete [] ListaUcenika;
}
void Popis::ispis(void)
{
int i;
if (brUcenika!=0)
{
cout << endl << "\n --> popis studenata: "<< endl;
for (i=0; i < brUcenika; i++)
cout << ListaUcenika[i] <<endl;
}
cout << "..." << endl;
}
void Popis::dodaj(void)
{
int i;
string ime,prezime,ucenik;
cout <<"\n --> ime: ";
cin>>ime;
cout <<"\n --> prezime: ";
cin>>prezime;
ucenik=ime+" "+prezime;
brUcenika++;
string* pomocni =new string[brUcenika];
for (i=0;i<brUcenika-1;i++)
{
pomocni[i]=ListaUcenika[i];
}
pomocni[brUcenika-1]=ucenik;
ListaUcenika=new string[brUcenika];
for (i=0;i<brUcenika;i++)
{
ListaUcenika[i]=pomocni[i];
}
delete [] pomocni;
cout << "\n --> Student je upisan."<< endl;
}
void Popis::dodaj(string ucenik)
{
int i;
brUcenika++;
string* pomocni =new string[brUcenika];
for (i=0;i<brUcenika-1;i++)
{
pomocni[i]=ListaUcenika[i];
}
pomocni[brUcenika-1]=ucenik;
ListaUcenika=new string[brUcenika];
for (i=0;i<brUcenika;i++)
{
ListaUcenika[i]=pomocni[i];
}
delete [] pomocni;
}
void Popis::brisi(void)
{
int i, flag=0;
string ime,prezime,ucenik;
cout <<"\n --> ime: ";
cin>>ime;
cout <<"\n --> prezime: ";
cin>>prezime;
ucenik=ime+" "+prezime;
for (i=0;i<brUcenika;i++)
{
if (ListaUcenika[i]==ucenik)
{
flag=1;
}
}
if(! flag)
{
cout << "\n --> Student nije naveden u bazi." << endl;
return;
}
flag=0;
brUcenika--;
string* pomocni=new string[brUcenika];
for (i=0;i<brUcenika;i++)
{
if (ListaUcenika[i]==ucenik)
{
flag=1;
}
if(flag)
{
pomocni[i]=ListaUcenika[i+1];
}
else
{
pomocni[i]=ListaUcenika[i];
}
}
ListaUcenika=new string[brUcenika];
for(i=0;i<brUcenika;i++)
ListaUcenika[i]=pomocni[i];
delete [] pomocni;
cout << "\n --> Student je obrisan." << endl;
}
int main()
{
Popis popis;
char izbor;
do
{
switch (izbor)
{
case '1': popis.ispis();
break;
case '2': popis.dodaj();
break;
case '3': popis.brisi();
break;
default:
break;
}
cout<<"\n --> 1. Ispis prisutnih studenata"<<endl;
cout<<"\n --> 2. Upis novog studenta"<<endl;
cout<<"\n --> 3. Brisanje studenta"<<endl;
cout<<"\n --> 4. Kraj"<<endl;
cout<<"\n --> Vas odabir : " ;
cin>>izbor;
}
while(izbor != '4');
return 0;
}
Ovdje me zanima cemu sluze ove naredbe(pogotovo ::):
Code:
~Popis();
Popis::Popis(): brUcenika(0) , ListaUcenika (new string[20]) {}
Popis::~Popis()
~Popis();
Popis::Popis(): brUcenika(0) , ListaUcenika (new string[20]) {}
Popis::~Popis()
Posljednji program:
Code:
#include<iostream>
using namespace std;
enum Figura
{
prazno,
bijelipjesak,
bijelitop,
bijelikonj,
bijelilovac,
bijelakraljica,
bijelikralj,
crnipjesak,
crnitop,
crnikonj,
crnilovac,
crnakraljica,
crnikralj
};
class sahPolje
{
private:
Figura figurica;
public:
sahPolje();
void namjesti(Figura fig);
Figura kojaFig();
};
sahPolje::sahPolje() : figurica(static_cast<Figura>(0))
{
};
void sahPolje::namjesti(Figura fig)
{
figurica = fig;
}
Figura sahPolje::kojaFig()
{
return figurica;
}
void stanje(sahPolje Sahovnica[][8])
{
int i, j;
for(i = 0; i < 8; i++)
{
for(j = 0; j < 8; j++)
{
cout.width(4);
cout << Sahovnica[i][j].kojaFig();
}
cout << endl;
}
}
int main()
{
int i, j;
sahPolje Sahovnica[8][8];
Sahovnica[0][0].namjesti(crnitop);
Sahovnica[0][1].namjesti(crnikonj);
Sahovnica[0][2].namjesti(crnilovac);
Sahovnica[0][3].namjesti(crnikralj);
Sahovnica[0][4].namjesti(crnakraljica);
Sahovnica[0][5].namjesti(crnilovac);
Sahovnica[0][6].namjesti(crnikonj);
Sahovnica[0][7].namjesti(crnitop);
for(i = 0; i < 8; i++)
Sahovnica[1][i].namjesti(crnipjesak);
for(i = 2; i < 6; i++)
{
for(j = 0; j < 8; j++)
Sahovnica[i][j].namjesti(prazno);
}
for(i = 0; i < 8; i++)
Sahovnica[6][i].namjesti(bijelipjesak);
Sahovnica[7][0].namjesti(bijelitop);
Sahovnica[7][1].namjesti(bijelikonj);
Sahovnica[7][2].namjesti(bijelilovac);
Sahovnica[7][3].namjesti(bijelikralj);
Sahovnica[7][4].namjesti(bijelakraljica);
Sahovnica[7][5].namjesti(bijelilovac);
Sahovnica[7][6].namjesti(bijelikonj);
Sahovnica[7][7].namjesti(bijelitop);
stanje(Sahovnica);
return 0;
}
#include<iostream>
using namespace std;
enum Figura
{
prazno,
bijelipjesak,
bijelitop,
bijelikonj,
bijelilovac,
bijelakraljica,
bijelikralj,
crnipjesak,
crnitop,
crnikonj,
crnilovac,
crnakraljica,
crnikralj
};
class sahPolje
{
private:
Figura figurica;
public:
sahPolje();
void namjesti(Figura fig);
Figura kojaFig();
};
sahPolje::sahPolje() : figurica(static_cast<Figura>(0))
{
};
void sahPolje::namjesti(Figura fig)
{
figurica = fig;
}
Figura sahPolje::kojaFig()
{
return figurica;
}
void stanje(sahPolje Sahovnica[][8])
{
int i, j;
for(i = 0; i < 8; i++)
{
for(j = 0; j < 8; j++)
{
cout.width(4);
cout << Sahovnica[i][j].kojaFig();
}
cout << endl;
}
}
int main()
{
int i, j;
sahPolje Sahovnica[8][8];
Sahovnica[0][0].namjesti(crnitop);
Sahovnica[0][1].namjesti(crnikonj);
Sahovnica[0][2].namjesti(crnilovac);
Sahovnica[0][3].namjesti(crnikralj);
Sahovnica[0][4].namjesti(crnakraljica);
Sahovnica[0][5].namjesti(crnilovac);
Sahovnica[0][6].namjesti(crnikonj);
Sahovnica[0][7].namjesti(crnitop);
for(i = 0; i < 8; i++)
Sahovnica[1][i].namjesti(crnipjesak);
for(i = 2; i < 6; i++)
{
for(j = 0; j < 8; j++)
Sahovnica[i][j].namjesti(prazno);
}
for(i = 0; i < 8; i++)
Sahovnica[6][i].namjesti(bijelipjesak);
Sahovnica[7][0].namjesti(bijelitop);
Sahovnica[7][1].namjesti(bijelikonj);
Sahovnica[7][2].namjesti(bijelilovac);
Sahovnica[7][3].namjesti(bijelikralj);
Sahovnica[7][4].namjesti(bijelakraljica);
Sahovnica[7][5].namjesti(bijelilovac);
Sahovnica[7][6].namjesti(bijelikonj);
Sahovnica[7][7].namjesti(bijelitop);
stanje(Sahovnica);
return 0;
}
U ovom zadatku me zanima cemu sluzi:
Code:
static_cast
static_cast
Znam da je jako dugacak post... Ispricavam se...
"We haven't the money, so we've got to think." — Ernest Rutherford
-----------------------------------------------------------------
-[ D ¤ E ¤ U ¤ S ]-
-----------------------------------------------------------------
-[ D ¤ E ¤ U ¤ S ]-