Ja mislim da se za to koristi naredba floor, a evo i linka http://www.cplusplus.com/reference/clibrary/cmath/ tu imaš sve. :)
Ja mislim da se za to koristi naredba floor, a evo i linka http://www.cplusplus.com/reference/clibrary/cmath/ tu imaš sve. :)
s tim da moraš includati math library
#include<cstdlib>
#include<iostream>
#include<math.h>
#define pi 3.14159
using namespace std;
int main()
{
float z;
z=floor(pi);
cout<<z<<endl;
system("PAUSE");
return 0;
}
Muci me to sto kompajler nece otvorit program...
ima greske koje neznam rjesit. Imam rjesen zadatak na drugi (jednostavniji) nacin. Zanima me sta u mom nacinu nevalja. Nema svrhe samo prepisivat gotove programe...
Unaprijed hvala na vremenu.
#include<iostream>
using namespace std;
class Employee
{
public:
Employee(int age, int radniStaz, int primanja);
~Employee ();
int GetAge()const{return itsAge;}
void SetAge(int age){itsAge = age;}
int GetRadniStaz()const{return itsRadniStaz;}
void SetRadniStaz(int radniStaz){itsRadniStaz = radniStaz;}
int GetPrimanja()const{return itsPrimanja;}
void SetPrimanja(int primanja){itsPrimanja = primanja;}
private:
int itsAge;
int itsRadniStaz;
int itsPrimanja;
};
Employee::Employee(int age, int radniStaz, int primanja)
{
itsAge = age;
itsRadniStaz = radniStaz;
itsPrimanja = primanja;
}
Employee::~Employee () {}
int main()
{
Employee Marko(25, 10, 2500);
Marko.SetAge(23);
Marko.SetRadniStaz(2);
Marko.SetPrimanja(5400);
cout << "Marko\nStarost: " << Marko.GetAge() << " godina.\n";
cout << "Radni staz: " << Marko.GetRadniStaz() << " godina.\n";
cout << "Primanja: " << Marko.GetPrimanja() << " kuna.\n\n";
Employee Filip(28, 5, 3000);
Filip.SetAge(54);
Filip.SetRadniStaz(23);
Filip.SetPrimanja(8200);
cout << "Filip\nStarost: " << Filip.GetAge() << " godina.\n";
cout << "Radni staz: " << Filip.GetRadniStaz() << " godina.\n";
cout << "Primanja: " << Filip.GetPrimanja() << " kuna.\n";
return 0;
}Dakle, markerom sam ti označio gdje su ti bile greške:
- iza vitičaste zagrade koja zatvara klasu stavlja se semicolon ;
- pošto si deklarirao custom konstruktor u klasi moraš alokaciju objekata klase vršiti tim konstruktorom.
Ako misliš zadržati mogućnost da objekte klase alociraš defaultnim konstruktorom (onim bez argumenata) - onda ga moraš u klasi deklarirati.
Ovako:
#include<iostream>
using namespace std;
class Employee
{
public:
Employee();
Employee(int age, int radniStaz, int primanja);
~Employee ();
int GetAge()const{return itsAge;}
void SetAge(int age){itsAge = age;}
int GetRadniStaz()const{return itsRadniStaz;}
void SetRadniStaz(int radniStaz){itsRadniStaz = radniStaz;}
int GetPrimanja()const{return itsPrimanja;}
void SetPrimanja(int primanja){itsPrimanja = primanja;}
private:
int itsAge;
int itsRadniStaz;
int itsPrimanja;
};
Employee::Employee()
{
itsAge = 0;
itsRadniStaz = 0;
itsPrimanja = 0;
}
Employee::Employee(int age, int radniStaz, int primanja)
{
itsAge = age;
itsRadniStaz = radniStaz;
itsPrimanja = primanja;
}
Employee::~Employee () {}
int main()
{
Employee Marko;
Marko.SetAge(23);
Marko.SetRadniStaz(2);
Marko.SetPrimanja(5400);
cout << "Marko\nStarost: " << Marko.GetAge() << " godina.\n";
cout << "Radni staz: " << Marko.GetRadniStaz() << " godina.\n";
cout << "Primanja: " << Marko.GetPrimanja() << " kuna.\n\n";
Employee Filip;
Filip.SetAge(54);
Filip.SetRadniStaz(23);
Filip.SetPrimanja(8200);
cout << "Filip\nStarost: " << Filip.GetAge() << " godina.\n";
cout << "Radni staz: " << Filip.GetRadniStaz() << " godina.\n";
cout << "Primanja: " << Filip.GetPrimanja() << " kuna.\n";
return 0;
}
Kad smo već kod ovog jednostavnog OO primjera evo kako bi to izgledalo u C#.
Ne moramo deklarirati podatkovne članove klase, ne moramo deklarirati custom konstruktor ni defaultni konstrtuktor,
sve možemo napraviti preko public svojstava, čak i ako ih deklariramo kao read only možemo kroz konstruktor provesti inicijalizaciju,
još kad se tome pridoda intellisense u VS-u - to leti 300 na sat.
using System;
using System.Collections.Generic;
using System.Text;
namespace Zaposlenik
{
class Zaposlenik
{
public int Dob { get; set; }
public int RadniStaz { get; set; }
public int Primanja { get; set; }
}
class Program
{
static void Main(string[] args)
{
Zaposlenik Marko = new Zaposlenik();
Zaposlenik Janko = new Zaposlenik
{
Dob = 25,
RadniStaz = 5,
Primanja = 5500
};
Console.WriteLine("Marko \nDob: {0} \nRadni staž: {1} \nPrimanja: {2}", Marko.Dob, Marko.RadniStaz, Marko.Primanja);
Console.WriteLine("\nJanko \nDob: {0} \nRadni staž: {1} \nPrimanja: {2}", Janko.Dob, Janko.RadniStaz, Janko.Primanja);
}
}
}
Ako misliš zadržati mogućnost da objekte klase alociraš defaultnim konstruktorom (onim bez argumenata) - onda ga moraš u klasi deklarirati.
Ovako:
Hm, zar nebi kompajler trebao sam napraviti defaultni konstruktor, ako istoga nema? Ili to vrijedi samo kad nema nikakvog konstruktora?
Ako misliš zadržati mogućnost da objekte klase alociraš defaultnim konstruktorom (onim bez argumenata) - onda ga moraš u klasi deklarirati.
Ovako:
Hm, zar nebi kompajler trebao sam napraviti defaultni konstruktor, ako istoga nema? Ili to vrijedi samo kad nema nikakvog konstruktora?
to vrijedi samo kad nisi deklarirao custom konstruktor - ako si deklarirao custom konstruktor onda moraš deklarirati i defaultni konstruktor ako misliš alocirati objekte defaultnim konstruktorom.
Iskreno, nisam vrtio po Demistificiranom da se prisjetim da sam to pročitao - samo sam zavrtio ovaj primjer u compileru i dobio potvrdu za to.
Ako u ovom primjeru izbaciš deklarirani defaultni konstruktor, a ostaviš custom konstruktor - ne možeš alocirati objekt klase defaultnim konstruktorom.
to vrijedi samo kad nisi deklarirao custom konstruktor - ako si deklarirao custom konstruktor onda moraš deklarirati i defaultni konstruktor.
Iskreno, nisam vrtio po Demistificiranom da se prisjetim da sam to pročitao - samo sam zavrtio ovaj primjer u compileru i dobio potvrdu za to.
Ako u ovom primjeru izbaciš deklarirani defaultni konstruktor, a ostaviš custom konstruktor - ne možeš alocirati objekt klase defaultnim konstruktorom.
Da, to sam si i mislio, ali nisam ni ja bio siguran, a neda mi se sad bas kopati po Demistificiranom, trebam uopce knjigu prvo naci xD. Tak mi i treba kad stvari po svuda ostavljam... :D
Ma tko bi to sve popamtio - evo sad sam vidio da i u C# vrijedi isto pravilo - da sam u onom svom gornjem primjeru deklarirao custom konstruktor,
one alokacije objekta klase Zaposlenik iz klase Program ne bi radile ako ne bi deklarirao i defaultni konstruktor.
Sjetim se da sam nešto pročitao tek kad naletm na problem - bar onda zapamtim.
Puno hvala Floki legendo!!
Tek sam sad te konstruktore skuzio... u ovom programu zapravo neigraju nikakvu ulogu.
Inace konstruktori osiguravaju da varijabla uvijek ima vrijednost koja ima neko znacenje.
Puno hvala Floki legendo!!
Tek sam sad te konstruktore skuzio... u ovom programu zapravo neigraju nikakvu ulogu.
Inace konstruktori osiguravaju da varijabla uvijek ima vrijednost koja ima neko znacenje.
Igraju ulogu, čim alociraš objekt neke klase pozivaš njen konstruktor, ako nisi deklarirao nijedan konstruktor, poziva se onaj defaultni tj. standardni
ili ako hoćeš onaj bez argumenata, on alocira objekt ali ima jednu manu, ne inicijalizira podatkovne članove klase
#include<iostream>
using namespace std;
class Employee
{
public:
~Employee ();
int GetAge()const{return itsAge;}
void SetAge(int age){itsAge = age;}
int GetRadniStaz()const{return itsRadniStaz;}
void SetRadniStaz(int radniStaz){itsRadniStaz = radniStaz;}
int GetPrimanja()const{return itsPrimanja;}
void SetPrimanja(int primanja){itsPrimanja = primanja;}
private:
int itsAge;
int itsRadniStaz;
int itsPrimanja;
};
Employee::~Employee () {}
int main()
{
Employee Marko;
cout << "Marko\nStarost: " << Marko.GetAge() << " godina.\n";
cout << "Radni staz: " << Marko.GetRadniStaz() << " godina.\n";
cout << "Primanja: " << Marko.GetPrimanja() << " kuna.\n\n";
Employee Filip;
Filip.SetAge(54);
Filip.SetRadniStaz(23);
Filip.SetPrimanja(8200);
cout << "Filip\nStarost: " << Filip.GetAge() << " godina.\n";
cout << "Radni staz: " << Filip.GetRadniStaz() << " godina.\n";
cout << "Primanja: " << Filip.GetPrimanja() << " kuna.\n";
return 0;
}Evo, kompajliraj ovaj program, defaultni konstruktor kojeg nismo deklarirali je alocirao i Marka i Filipa, međutim za Marka smo dobili neke mrak vrijednosti pošto nije izvršena inicijalizacija podatkovnih članova klase. Pošto je to tako - za ovaj tvoj program je najbolje rješenje da izvršiš inicijalizaciju podatkovnih članova klase prilikom alokacije objekta, odnosno da napišeš onaj custom konstruktor Employee(int dob, int radniStaz, int primanja).
Isto tako, ako ne napises vlastiti destruktor, kompajler sam napravi defaultni za tebe. Iako je za jednostavne klase dovoljan, za bilo sto vise najbolje sam napisati destruktor. Isto tako moras paziti ako imas klasu koja sadrzi cistu virutalnu funkciju, da je ta klasa apstraktna i obavezno joj destruktor mora biti virtualan inace riskiras nepozivanje destruktora izvedenih klasa. Ako ne znas sto sam upravo sad rekao, zaboravi, kad dodes do tog dijela i naucis to onda ces skuziti sve. ;)
Trebala bi mi pomć sa klasama da mi ih netko laički objasni(rječnikom totalnog početnika) imam primjer jednostavnog koda pa ako mi netko na tom primjeru kako se klasa izvršava unutar programa i što je ona točno?
#include <iostream>
using namespace std;
class krug // definicija klase
{
public: // blok privatnih varijabli klase
double radijus; // radijus kruga
};
void main(void)
{
krug k;
krug k1;// napravi objekt imena k klase krug;
double d;
d = 1.3;
k.radijus = d; // podešavanje varijable radijus objekta k
k1.radijus=d*d;
cout << "Radijus kruga:" << k.radijus << endl;
cout << "Radijus kruga duplo:" << k1.radijus << endl; // ispis na ekran
}
Koliko ja znam Turbo C++ je zastarjeli kompajler. Nasljednik mu je Borland C++, a s obzirom da je Borland C++ proprietary (po mom saznanju), onda valjda Microsoftov. A opet, ovisi za sto ti treba...
Koliko ja znam Turbo C++ je zastarjeli kompajler. Nasljednik mu je Borland C++, a s obzirom da je Borland C++ proprietary (po mom saznanju), onda valjda Microsoftov. A opet, ovisi za sto ti treba...
budem koristio microsoftov. Imam neugodna iskustva sa više manje svim compilerima, jer nakon nekog vremena mi ne želi ni jednostavnu naredbu cout<<" hello world" ispisat,ali valjda sam ja za to kriv.
budem koristio microsoftov. Imam neugodna iskustva sa više manje svim compilerima, jer nakon nekog vremena mi ne želi ni jednostavnu naredbu cout<<" hello world" ispisat,ali valjda sam ja za to kriv.
To onda bas i nema veze s kompajlerima... Kompajler nista ne ispisuje, kompajler samo iz ljudima citljivog source koda generira strojni kod.
Sad kad ovo kazes, skuzio sam da ti zapravo mislis na IDE, a ne na kompajler (mislio sam da mislis na kompajler koji Visual Express koristi). Postoji velika razlika izmedu Integrated development environmenta i kompajlera. Kompajler je samo jedan od alata koje IDE objedinjuje (a objedinjuje editor, kompajler, debugger itd.).
budem koristio microsoftov. Imam neugodna iskustva sa više manje svim compilerima, jer nakon nekog vremena mi ne želi ni jednostavnu naredbu cout<<" hello world" ispisat,ali valjda sam ja za to kriv.
To prolazi u svim C++ kompajlerima koji imaju istream u standardnoj biblioteci (a to su vjerojatno svi, eventualno možda neki za embedded platforme ili mobitele ili štoveć). Dakle, da - sam si kriv za to.
Ako može netko da mi pomogne oko ovog zadatka bio bih zahvalan, ja sam ga uradio ali mi ne radi...
Napišite program koji učitava dva cijela broja, a u funkciji se računa suma znamenaka koji se u
unesenim brojevima ponavljaju na istim pozicijama(npr. 123456 i 2446 -> 4 i 6 -> 10).
#include <stdio.h>
#include <string.h>
int suma(int x[20], int y[20]);
void main()
{
int a[20], b[20], br;
scanf("%d %d", a, b);
br = suma(a, b);
printf("%d", br);
}
int suma(int x[20], int y[20])
{
int i, a, b, d, zbroj=0;
if(a<b)
{
d=a;
}
else
{
d=b;
}
for(i=0;i<d;i++)
{
if(x[i]==y[i])
{
zbroj=zbroj+x[i];
}
}
return zbroj;
}
Isto tako i ovaj sa datotekama kompajl kaže da je sve u redu, da li može bit zbog toga sto nema ništa u datoteci?
Napišite program koji čita sve cijele brojeve iz datoteke.
Nakon toga odredi prosječnu vrijednost svih učitanih brojeva!
#include <stdio.h>
void main()
{
int niz[20], br=0, i, sum=0, pr;
FILE *dat;
dat=fopen("brojevi","r");
while(!feof(dat))
{
fscanf(dat,"%d", &niz[br]);
br++;
}
fclose(dat);
for(i=0;i<br;i++)
{
sum=sum+niz[i];
}
pr=sum/br;
printf("%d", pr);
}
unesenim brojevima ponavljaju na istim pozicijama(npr. 123456 i 2446 -> 4 i 6 -> 10).
Ti tretiras integer kao polje kojemu mozes pomocu indeksiranja doci do pojedinih znamenki. To tako ne funckionira. Mozes to rijesiti tako da napises funkciju koja ce izvuci pojedine znamenku iz broja, ili (puno jednostavnije) unjeti dva broja kao string a ne integer. Tako ces lagano moci provjeriti ponavljaju li se znamenke na nekim mjestima, potom ASCII vrijednosti znakova konvertirati u brojeve koje te znamenke predstavljaju pa ih zbrajati.
Isto tako i ovaj sa datotekama kompajl kaže da je sve u redu, da li može bit zbog toga sto nema ništa u datoteci?
Pa logicno. Nista ne mozes procitati iz prazne datoteke jer u njoj nema nicega :D
To je obicna tekstualna datoteka, otvori notepad i upisi nekakve vrijednosti u nju.
Znači ovaj drugi je u redu samo treba napraviti *dat u notped-u, to ne znam ali nije mi ni bitno.
A ovaj prvi ne kužim(skontao sam jedino da intiger ne mogu indeksirat), kako ću napravit funkciju da mi izvuče pojedinu znamenku iz broja? I zar se može unijeti broj kao string, to nisam znao i kako ću onda konvertirati ASCII vrijednosti znakova u brojeve. Molim te je li mi možeš to uraditi?
{
int i, a, b, d, zbroj=0;
if(a<b)
{
d=a;
}
else
{
d=b;
}
for(i=0;i<d;i++)
{
if(x[i]==y[i])
{
zbroj=zbroj+x[i];
}
}
return zbroj;
}
Niti jednu od varijabli označenu žutim markerom nisi inicijalizirao! Njihova vrijednost je nepoznata, nedefinirana u tvom programu! I onda uspoređuješ je li nepoznati a manji od nepoznatog b! Koja je poanta svega toga? Također, zašto si tako nazvao varijable? Iz naziva varijable treba se znati čemu varijabla služi. Varijabla i ti može ostati i (integer, iterator), međutim nema je smisla deklarirati na početku funkcije. Varijabla i, kad se koristi unutar petlje, u pravilu se deklarira za petlju, dakle for (int i = 0; i <...).
A ovaj prvi ne kužim(skontao sam jedino da intiger ne mogu indeksirat), kako ću napravit funkciju da mi izvuče pojedinu znamenku iz broja? I zar se može unijeti broj kao string, to nisam znao i kako ću onda konvertirati ASCII vrijednosti znakova u brojeve. Molim te je li mi možeš to uraditi?
Ako broj unosiš kao integer, dakle kao broj, do njegovih znamenki možeš doći cjelobrojnim dijeljenjima (/) i ostacima od dijeljenja (modulo iliti operator %). Naime, ako nad nekim brojem napraviš operaciju
broj % 10
time si dobio zadnju znamenku. Npr., 4348378728347847 % 10 je 7. Znači imaš zadnju znamenku i možeš raditi s njom što želiš. I što dalje radiš? Podijeliš broj s 10. Što si time učinio? Odrezao si zadnju znamenku broja. I ponavljaš sve to dok ti broj ne postane nula, dakle dok nisi uklonio sve znamenke.
......................
Ako unosiš kao niz znakova - kako ćeš dobiti iz ASCII znaka dobiti vrijednost znamenke? Iz znamenke '0' bi trebao biti dobiti vrijednost - nula, zar ne? Što se događa ako napraviš ovo: vrijednost_znamenke = ASCII_znamenka - '0'? (PS nisam 100% siguran da se tako mogu oduzimati charovi - provjeri). Pa ako je ASCII_znamenka '0' i od nje oduzmeš '0', dobit ćeš koliko? Nula, je li tako? Ako je ASCII_znamenka '1' i oduzmeš od nje '0', dobit ćeš cjelobrojnu vrijednost od koliko? 1.
Svaka tebi čast ali ja ovo ne znam uradit, 'a' i 'b' sam unosio kao neke brojeve pa sam ih uspoređivao da odredim koji je duži to je ono 'd' da do tog broja vrtim for petlju jer je dalje nepotrebno(pa da onda odredim u drugoj petlji na kojim mjestima imaju iste znakove), ali to je slučaj sa stringovima, a sa integerima se ne može tako.
Znači ovaj drugi je u redu samo treba napraviti *dat u notped-u, to ne znam ali nije mi ni bitno.
Kako ne znas? Nauci. Napravi datoteku brojevi.txt, u nju u svaki red ukucaj po jedan cijeli broj. Spremi datoteku u folder gdje se nalazi program.
Liniju u programu izmjeni sa:
dat=fopen("brojevi","r");
u:
dat=fopen("brojevi.txt","r");
I eto ga. Velika stvar... :D
Btw. ovo sto si ti do sada pisao je C a ne C++. Nauci razlikovati ta dva jezika.
Svaka tebi čast ali ja ovo ne znam uradit, 'a' i 'b' sam unosio kao neke brojeve pa sam ih uspoređivao da odredim koji je duži to je ono 'd' da do tog broja vrtim for petlju jer je dalje nepotrebno(pa da onda odredim u drugoj petlji na kojim mjestima imaju iste znakove), ali to je slučaj sa stringovima, a sa integerima se ne može tako.
Pa ako imaš nefunkcionalne dijelove programa, onda to obriši iz programa. Ta funkcija ti nema baš nikakvog smisla.
////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
int main()
{
int broj;
cout << "Upisi broj: ";
cin >> broj;
cout << "Znamenke broja (od zadnje prema prvoj): [ ";
while (broj != 0) {
int znamenka = broj % 10;
cout << znamenka << " ";
broj /= 10;
}
cout << "]\n\n";
return 0;
}
////////////////////////////////////////////////////////////////