Što bi predstavljao sljedeći kod
struct A {
private:
int i, j, k;
public:
int f();
void g();
};
int A::f() {
return i + j + k;
}
void A::g() {
i = j = k = 0;
}
tj. šta ova dvotočka predstavlja?
Što bi predstavljao sljedeći kod
struct A {
private:
int i, j, k;
public:
int f();
void g();
};
int A::f() {
return i + j + k;
}
void A::g() {
i = j = k = 0;
}
tj. šta ova dvotočka predstavlja?
Koja dvotocka, ova nakon private ili scope operator "::"?
To predstavlja područje definicije. Primjerice A::f() znači da se pozivaš na funkciju f koja se nalazi unutar strukture/klase A.
Kao sta sam neki dan napisao polako sam poceo s C++, i zasada mi dobro ide.
Evo upravo sam napravio neki bzvz program pa sam samo htio cuti vase misljenje ako se to moglo jednostavnije napraviti, mozda bez toliko if-ova i slicno. Koji pocetnicki savjet uvjek dobro dode. 
#include <iostream>
using namespace std;
int main()
{
int x = 1;
int number;
double total = 0;
double prosjek;
cout << "Unesite prosjek 10 predmeta!" << endl;
while( x <=10 ){
x++;
cin >> number;
total = total + number;
}
prosjek = ((total))/10;
cout << "Prosjek iznosi " << prosjek << "!" << endl;
if(prosjek>=4.5 && prosjek<=5)
{
cout << "Ucenik je prosao s odlicnim uspjehom!" << endl;
}
if(prosjek>=3.5 && prosjek<4.5)
{
cout << "Ucenik je prosao s vrlo dobrim uspjehom!" << endl;
}
if(prosjek>=2.5 && prosjek<3.5)
{
cout << "Ucenik je prosao s dobrim uspjehom!" << endl;
}
if(prosjek>=1.5 && prosjek<2.5)
{
cout << "Ucenik je prosao s dovoljnim uspjehom!" << endl;
}
if(prosjek>0 && prosjek<1.5)
{
cout << "Ucenik nije prosao razred!" << endl;
}
return 0;
}
Odgovor korisniku Zuja007
Nisam ni ja neki ekspert, ali što se tiče brzine izvođenja pojedinih operacija programa, unaprijediti se može u sljedećim segmentima:
Umjesto programskog dijela sa while petljom, mogao si rađe koristiti for: to joj je inače i namjena jer je preporučen za korištenje kad su takvi brojači u pitanju (mada se svaka potreba iteriranja može zadovoljiti upravo sa for petljom). Također se u tvom primjeru vrijednost varijable x koristi samo u toj iteraciji, pa ni nema potrebe da ona zauzima prostor tijekom cijelog izvođenja programa - ako ju deklariraš u glavi for petlje, ona će se automatski dealocirati pri izlasku iz njenog tijela (a takvu uštedu memorije nije bilo moguće izvesti sa while petljom xD).
total = total + number; se može izvestii i kao total += number; - na taj način izbjegavaš operaciju očitavanja vrijednosti koja se krije u memoriji pod imenom total, pa dohvaćanje vrijednosti pod imenom number, pa očitavanje operanda zbrajanja i izvršavanje te operacije i na kraju prijepis vrijednosti na memorijsku lokaciju varijable total, NEGO jednostavno pridodaš vrijednost unesenog broja number na trenutnu vrijednost koju sadrži varijabla total
Isto tako što se tiče varijable prosjek, nisi ju ni trebao koristiti s obzirom da ti ovaj program nakon izračuna sume svih ocjena učenika dalje više nigdje ne koristi taj podatak, tako da si mogao to srediti sa total /= 10; i kasnije uspoređivati u if selekcijama vrijednosti te varijable jer u sebi zapravo sadržava prosjek nakon prethodne naredbe (da ne zaboravim da je samim time i deklaracija varijable prosjek nepotrebna)
Ako se sadržaj selekcije (tipa if) ili iteracije (tipa while ili for) sastoji od samo jedne naredbe, tada nije potrebno koristiti vitičaste zagrade ({}) koje inače označavaju područje dosega naredbi koje čine blok naredbi. Mada ja ti ipak preporučujem da koristiš svugdje te vitičaste zagrade u slučaju da misliš proširivati te programske konstrukte naknadno s vremenom, pa da se ne iznenadiš kad ti određeni dijelovi kôda ne budu dohvaćeni, a čini ti se da je sve logički smisleno jer tako vizualno izgleda tako zbog intendancije (uvlačenja teksta). Izuzetak je jedino ako ćeš studirat na FOIju, pa ćeš se susret sa programskim sučeljem Verifikator u kojem si gotovo prisiljen izbjegavati korištenje više od 1 naredbe po selekciji/iteraciji.
Umjesto ovih nekoliko korištenih if selekcija, mogao si rađe koristi if-else if-else selekciju: u tvojem slučaju da je prosjek učenika 5.0, program bi i dalje provjeravao da li vrijede sljedeći uvjeti (mada ne vrijede), a to oduzima određeno vrijeme. Tako se više preporučuje korištenje ovog predloženog rješenja gdje ako prvi uvjet biva zadovoljen, izvršava se naredba unutar njega, a dalje se sljedeći uvjeti unutar tog "složenog" programskog konstrukta niti ne provjeravaju, nego se izvršava sljedeća naredba izvan tog skupa (tj. naredba return 0;).
Hvala puno na brzom i opširnom odgovoru!
Jos nisam naucio for petlju pa sam zbog toga morao while koristiti. :D
Potrudit cu se da ubuduce iskoristiti sve savjete. 
P.S. Nemislim na FOI, al ove godine planiram upisati FER pa ce vjerujem sve ovo dobro doci. 
Hvala puno na brzom i opširnom odgovoru!
Jos nisam naucio for petlju pa sam zbog toga morao while koristiti. :D
Potrudit cu se da ubuduce iskoristiti sve savjete. 
P.S. Nemislim na FOI, al ove godine planiram upisati FER pa ce vjerujem sve ovo dobro doci. 
Obicno ljudi uce for prije while zbog toga jer je while petlja upravilu for petlja sa uvjetom. For petlja ti je u pravilu brojac s kojim kazes napravi nesto N puta, sastoji se od 3 djela. Pises je ovako: for(varijabla_brojac;uvjet;povecaj/smanji varijablu_brojac){kod}. Zapamti ako zadas uvijet >5 i varijablu_brojac=0 da ce ici 0,1,2,3,4 .
Znaci ako zelis ispisati prvih 10 znamenki
for(int i=1;i<11;i++){
cout << i << endl;
}
int i = 1 - varijablu_brojac smo postavili na 1
i < 11 - posto hocemo prvih deset(do deset) stavljamo i<11, da smo htjeli do 15 stavili bi i<16
i++ - svaki put kad se izvrsi dio koda u foru povecaj i(varijablu_brojac) za +1
for moze ici i "unatrag", sada ce ispisati od 10 do 1
for(int i=10;i>0;i--){
cout << i << endl;
}
for mozes i iskoristiti za ispis parnih brojeva, npr. do 10
for(int i=0;i<10;i+=2){
cout << i << endl;
}
u ovom slucaju nece ispisati 10, no da si napisao i<11 onda bi ispisao i 10
Nadam se da sam ti s ovime uspio za pocetak malo objasniti for petlju, nemoj ju odgadjat nauciti jer je korisna :)
Pozdrav, krenia sam ispočetka nakon par godina, tako da ono šta sam zna zaboravia sam.
Radim po knjizi demifisticirani c++ i doša sam na primjer o jednadžbi da ne duljim evo kod i ono šta me muči
#include <iostream>
#include <fstream>
using namespace std;
int main() {
const int nmax = 20;
float a[nmax][nmax+1];
ifstream ulazniTok("koefic.txt");
if (!ulazniTok) {
cerr << "Ne mogu otvoriti datoteku!" << endl;
return 1;
}
int n;
ulazniTok >> n;
if (n >= nmax) {
cerr << "Sustav jednadžbi prevelik!" << endl;
return 2;
}
// učitavanje koeficijenata
int r, s;
for (r = 0; r < n; r++) // po recima
for (int s = 0; s <= n; s++) // po stupcima
ulazniTok >> a[r][s];
// svođenje na trokutastu matricu
for (r = 0; r < n; r++) {
for (s = r + 1; s <= n; s++)
a[r][s] /= a[r][r];
for (int rt = r+1; rt < n; rt++)
for (int ss =r+1; ss <= n; ss++)
a[rt][ss] -= a[rt][r] * a[r][ss];
}
// ...te povratna supstitucija
for (r = n - 1; r >= 0; r--)
for (s = n - 1; s > r; s--)
a[r][n] -= a[r][s] * a[s][n];
// ispis rezultata
for (r = 0; r < n; r++)
cout << "x" << (r + 1) << " = "
<< a[r][n] << endl;
return 0;
}
ova petlja gdje je boldano, kužim šta petlja radi. Predpostavljam je da je r=0, po tome bi rt =1 i ss=1, al ako je ss=1 (onda mi nebi išlo od prvog elemetna polja)
ako to napišem onda mi izbacuje kao rješenja nešto stoto jer ko zna gdje to nalazi u polju. pokušao sam preko F10 korak po korak
ne prikazuje mi se nikako vrijednost rt, dok ss stoji na 0.
Pogresna pretpostavka - nakon izlaska iz petlje 'for (r = 0; r < n; r++)' je r=n. Onda je na ulazu u tvoju boldanu petlju rt=n+1 i ni ne ulazi se u nju. Ako zelis r=0, onda ga moras resetirat sam.
Pogresna pretpostavka - nakon izlaska iz petlje 'for (r = 0; r < n; r++)' je r=n. Onda je na ulazu u tvoju boldanu petlju rt=n+1 i ni ne ulazi se u nju. Ako zelis r=0, onda ga moras resetirat sam.
for (int rt = r+1; rt < n; rt++)
for (int ss =r+1; ss <= n; ss++)
zar onda nije odma ovaj uvjet neispunjen, jer je rt= n+1, pa je rt >n?
Da, zato sam i rekao da se u petlju ni ne ulazi jer je uvjet neispunjen odmah na pocetku.
pozdrav, evo mene opet, radim jedan zadatak, treba napraviti pascalov trokut, za dobivanje binomnih koeficijenata
napravio sam ispis prvog stupca da budu 1 i u prvom redu da nakon te 1 idu 0, ono što me buni je, kako da napravim
zbroj ovog poviše i lijevo od tog poviše, pa ako netko može pomoći.
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
const int n=10;
int a[n][n];
int t=0,s=0;
for(int t=0;t<n; t++){
a[t][s]=1;
for(int s=1; s<n;s++)
a[t][s]=0;
}
for(int rr=1;rr<n;rr++){
for(int ss=1; ss<n;ss++)
a[rr][ss]=a[t][s]+a[t][ss];
}
for(int t=0;t<n;t++)
for(int s=0;s<n;s++)
cout<<setw(4)<<a[t][s];
cout<<endl;
return 0;
}
pokušavao sam dodati još 2 for petlje za t i s, no nisam ima željeni efekt isto tako
sam probao inicijalizirati t i s na 0, poviše zelenog markera pa bi postavio
s++ poslje ovog žutog markera, te t++ ispod zelenog markera tako da se kreće kroz niz, al bezuspješno
uspio sam sam nakon par sati mozganja iskušavanja i svega, izgleda malo nezgrapno
pa bi volia da mi kažete svoja mišljenja, za izmjene i preinake za ubuduće.
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
const int n=10;
int a[n][n];
int t=0,s=0;
for(int t=0;t<n; t++)
a[t][s]=1;
for(int s=1; s<n;s++)
a[t][s]=0;
int r, c=0;
for(int rr=1;rr<n;rr++){
r=0;
for(int ss=1; ss<n;ss++){
a[rr][ss]=a[c][r]+a[c][ss];
r++;
}c++;
}
for(int t=0;t<n;t++){
for(int s=0;s<n;s++)
cout<<setw(4)<<a[t][s];
cout<<endl;}
return 0;
}
opet ja, mučim se s ovim zadatkom i očito ga ne kužim.
vrhovi pravokutnika se spremaju u matricu int vrhovi[10][4]
pri čemu se za svaki pravokutnik x1 koordinata sprema u prvi stupa,
y1 u 2 stupac, x2 gornjeg desnog kuta u 3, te y2 u 4 stupac.
Napišite program s petljom u kojoj se učitavaju koordinate ptavokutnika,
petlja se prekida kad su sve 4 koordinate 0.
A unutar druge petlje odredite koordinate najmanjeg pravokutnika koji
če obuhvatiti sve unesene pravokutnike.
Uputa: treba naći najmanju x, odnosno y svih lijevih, te najveću x odnosno y
svi gornjih desnih. početno postavite na vrijednosti najvećih odnosno najmanjih
mogućih int-ova
#include<iostream>
using namespace std;
int main(){
int a[4][4];
int temp[4];
for(int t=0; t<4; t++){
for(int s=0; s<4; s++){
cin>>a[t][s];
}
int s=0;
if(a[t][s]==0 && a[t][s+1]==0 && a[t][s+2]==0 && a[t][s+3]==0)
break;
}
int s=0;
for(int i=3;i>0;i--){
for(int t=0; t<4;t++)
if(a[t][s]>a[t+1][s]){
temp[0]=a[t][s];
a[t][s]=a[t+1][s];
a[t+1][s+1]=temp[0];
}}
s=0;
for(int i=3;i>0;i--){
for(int t=0; t<4;t++)
if( a[t][s+1]>a[t+1][s+1]){
temp[1]=a[t][s+1];
a[t][s+1]=a[t+1][s+1];
a[t+1][s+1]=temp[1];
}}
s=0;
for(int i=3;i>0;i--){
for(int t=0; t<4;t++)
if(a[t][s+2]<a[t+1][s+2]){
temp[2]=a[t][s+2];
a[t][s+2]=a[t+1][s+2];
a[t+1][s+2]=temp[2];
}}
s=0;
for(int i=3;i>0;i--){
for(int t=0; t<4;t++)
if( a[t][s+3]<a[t+1][s+3]){
temp[3]=a[t][s+3];
a[t][s+3]=a[t+1][s+3];
a[t+1][s+3]=temp[3];
}}
int t=0;
for(int s=0; s<4; s++){
cout<<a[t][s]<<" ";
}
cout<<endl;
return 0;
}
dio gdje upišem sam napravia, al ovo kad traži najveće/najmanje ne radi baš najbolje.
Znam da sam već dosadia u ova dva dana, al vi ste mi jedina pomoć
Pitanje za iskusnije programere.
Koliko je bitno nauciti c++ 11 i 14? Tj, koliko je bitno za mene osobno kao programera a koliko je to bitno za eventualnog poslodavca?
Pitanje za iskusnije programere.
Koliko je bitno nauciti c++ 11 i 14? Tj, koliko je bitno za mene osobno kao programera a koliko je to bitno za eventualnog poslodavca?
C++11 je skup novih mogućnosti koji su tek nadogradnja onoga što C++ do sada nudi. Da bi mogao iskoristiti C++11 trebao bi već biti napredniji programer pa da znaš prepoznati koje točno optimizacije i novine C++a11 možeš iskorisiti u svojim aplikacijama.
Primjerice, C++11 uvodi semantiku prijenosa koja daleko poboljašava performanse aplikacija pri radu s privremenim objektima. Međutim, onaj koji prethodno ne zna semantiku kopiranja (deep copy) sigurno neće znati kada upotrijebiti niti semantiku prijenosa. Isto tako, onaj tko općenito ne zna predloške teško da će moći raditi s predlošcima iz C++11 koji dopuštaju rad s neograničenim brojem argumenata itd. Tu je tek malo dodatnih novina poput lambda funkcija, pametnih pokazivača i sl. a sve ostalo se svodi na tek sitnice u stilu i načinu pisanja koda.
Ukratko, C++11 nije toliko bitan niti za tebe niti za poslodavca ako ti i prije toga dobro barataš s C++om. C++11 će ti tek pomoći da ono što si do sada radio u C++u napišeš jednostavnije i da ono radi sigurnije i brže. No da je preduvijet za nešto - nije.
Pozdrav,
imam iskustva u radu sa C i C++ te linux OS-om, no nikako mi ne polazi za rukom installacija Allegro 5.0 lib-a na ubuntu 14.04. Ako bi mi netko to mogao kroz par koraka pojasniti, bio bih zahvalan.
Ima netko kakav link skripte ili zbirke zadataka sa zadacima iz OOP? Sa riješenjima?
Ima netko kakav link skripte ili zbirke zadataka sa zadacima iz OOP? Sa riješenjima?
Koji faks?
Nijedan (tj.svoje sam odradio)... Ja sam ovako smouk, pa želim nekako vidjet koliko sam usvojio.... :D
Možeš onda probati ove zadatke koje sam sastavio svojim studentima za vježbu.
https://www.dropbox.com/s/awvc3qfc39k7hug/Dodatni%20zadaci%20za%20vje%C5%BEbu.pdf?dl=0
Namjerno nema rješenja
. Ali ako želiš provjeriti možeš i ovdje staviti na forum pa ćemo pregledati.
Na faxu sam imao C++ i plan se u 90% poklapa sa ovom listom: http://www.learncpp.com/ i sada više nema na faxu c++.
Šta nakon? Neka knjiga ili?
Nakon toga ide nekakva C++ GUI biblioteka za razvoj aplikacija s formama itd. C++ Builder je tu uvijek moja preporuka 
Možeš onda probati ove zadatke koje sam sastavio svojim studentima za vježbu.
https://www.dropbox.com/s/awvc3qfc39k7hug/Dodatni%20zadaci%20za%20vje%C5%BEbu.pdf?dl=0
Namjerno nema rješenja
. Ali ako želiš provjeriti možeš i ovdje staviti na forum pa ćemo pregledati.
Hvala ti...
Vidim da je u igri TVZ, pretpostavljam računarstvo? Ja sam elektrotehniku završio :)
Daj mi molim te reci, šta od literature koristite za OOP? Neku internu skriptu ili neku knjigu?
Pitao sam jednog lika što je završio računarstvo, ali mi nije baš ni znao reću da li su radili u c ili c++ :D
Moja je uvijek Qt i Qt Creator. 
Možeš onda probati ove zadatke koje sam sastavio svojim studentima za vježbu.
https://www.dropbox.com/s/awvc3qfc39k7hug/Dodatni%20zadaci%20za%20vje%C5%BEbu.pdf?dl=0
Namjerno nema rješenja
. Ali ako želiš provjeriti možeš i ovdje staviti na forum pa ćemo pregledati.
Hvala ti...
Vidim da je u igri TVZ, pretpostavljam računarstvo? Ja sam elektrotehniku završio :)
Daj mi molim te reci, šta od literature koristite za OOP? Neku internu skriptu ili neku knjigu?
Pitao sam jednog lika što je završio računarstvo, ali mi nije baš ni znao reću da li su radili u c ili c++ :D
Ja sam napisao skriptu od oko 100 str. Radi se C++ na OOP, a od ovog semestra i C++11 unutar njega.
Moja je uvijek Qt i Qt Creator. 
Meni je s njim problem što me previše podsjeća na MFC...
Ja sam napisao skriptu od oko 100 str. Radi se C++ na OOP, a od ovog semestra i C++11 unutar njega.
Jel bi mogao ja, kao bivši TVZ-ovac dobiti primjerak skripte 
Sad mi se neda
Sutra cu staviti link na pdf.
Nego, odakle toliko zanimanje za OOP ako se smije znati?