ponedjeljak, 17. studenoga 2014.

Zadaci


1.  Napišite program koji će za unesene stranice trougla a, b i c odrediti da li je trougao pravougli ili nije! Prvo provjeriti za unesene stranice a,b i c da sli mogu da čine trougao. (Primjer 1. Ulaz: Unesite stranice trougla: 3,4,5 Izlaz: Trougao je pravougli! Primjer 2. Ulaz: Unesite stranice trougla: 5,6,7 Izlaz: Trougao nije pravougli! Primjer 3. Ulaz: 3,3,7 Izlaz: Ovi brojevi ne čine stranice trougla.
2.   Napišite program koji će za unesene stranice trougla a, b i c odrediti da li je trougao jednakokraki, jednakostranični ili raznostranični !  Prvo prvojeriti za unesene stranice a,b i c da sli mogu da čine trougao. (Primjer 1. Ulaz: Unesite stranice trougla: 4,4,6 Izlaz: Trougao je jednakokraki! Primjer 2. Ulaz: Unesite stranice trougla: 4,4,4 Izlaz: Trougao je jednakostranicni! Primjer 3. Ulaz: Unesite stranice trougla: 6,7,9 Izlaz: Trougao je raznostranicni. Ulaz: 3,3,7 Izlaz: Ovi brojevi ne čine stranice trougla! ).3.   Napišite program koji će za unesene stranice paralelograma a, b i ugla između njih odrediti da li je u pitanju  romb, kvadrat ili pravougaonik! (Primjer 1: Ulaz :4,4, 90 Izlaz: Ovo je kvadrat.  Primjer 2. Ulaz: 4,5,90 Izlaz: Ovo je pravougaonik. Primjer 3. Ulaz: 5,5, 67 Izlaz: Ovo je romb. Primjer 4: Ulaz 5,6, 70 Izlaz: Ovo je romboid.)4.  Napišite program koji provjerava da li je prvi broj korijen drugog broja! (Primjer 1: 9,81 Izlaz: 9 je korijen od 81. Primjer 2. 7, 9 Izlaz: 7 nije korijen od 9.)Upute: U zadacima 1. i 2. koristit if uslov unutar if uslova, tako da se može desiti ovako nešto if(izraz1) {if(izraz 2) cout<<ispis; else cout<<ispis;} else cout<<ispis. Kod trećeg zadatka nacrtati slike na papiru i vidjeti koji su dovoljni uslovi da bi nešto bilo kvadrat, pravougaonik, romb ili romboid. Romb ima sve četiri stranice jednake dok kod romboida ne moraju biti.Kod zadatka 4. ne morate koristit matematičke naredbe, dovoljno je koristit kvadrat nekog broja.1. #include<iostream>
       using namespace std;
       int main()
       {
int a,b,c; cout<<"Unesite stranice trougla: "; cin>>a>>b>>c; if((a+b>c) && (a+c>b) && (b+c>a))  // provjera da li ovi brojevi mogu biti stranice trougla { if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)) //provjera da li je trougao pravouglicout<<"Trougao je pravougli!"<<endl;else cout<<"Trougao nije pravougli!"<<endl;}else cout<<"Ovi brojevi nisu stranice nekog trougla!"<<endl;system("pause");
return 0;
        }
    2. #include<iostream>
       using namespace std;
       int main()
       {
int a,b,c;
cout<<"Unesite stranice trougla: ";
cin>>a>>b>>c;
if((a+b>c) && (a+c>b) && (b+c>a)) //provjerava da li ovi brojevi mogu biti stranice trougla
{ //provjerava kakav je trougao
   if (a==b && a==c) cout<<"Trougao je jednakostranicni!"<<endl;
   else if(a==b||a==c||b==c)cout<<"Trougao je jednakokraki!"<<endl;
   else cout<<"Trougao je raznostranicni!"<<endl;
}
else cout<<"Ovi brojevi nisu stranice nekog trougla!"<<endl;
system("pause");
return 0;
} 3. #include<iostream>
       using namespace std;
       int main()
       {
int a,b, ugao;
cout<<"Unesite stranice i ugao: ";
cin>>a>>b>>ugao;
/       //provjerava kakav je ovo paralelogram
if(a==b && ugao==90) cout<<"Ovo je kvadrat!"<<endl;
else if(a!=b&&ugao==90)cout<<"Ovo je pravougaonik!"<<endl;
else if(a==b)cout<<"Ovo je romb!"<<endl;
else cout<<"Ovo je romboid!"<<endl;
system("pause");
return 0;
       } 
   4.#include<iostream>
      using namespace std;
      int main()
      {
        int a,b;
cout<<"Unesite brojeve: ";
cin>>a>>b;
       //provjera da li je prvi broj korijen drugog            pomoću kvadrata
if(a*a==b) cout<<a<<" je korijen od "<<b<<endl; 
else cout<<a<<" nije korijen od "<<b<<endl;
       } 

nedjelja, 19. listopada 2014.

Kontrola toka

U programskim jezicima dođemo da određenih mjesta gdje program odučuje da li je nešto tačno ili ne, i u zavisnosti od toga vrši neku radnju. To postižemo naredbama if i else. Naredbom if provjeravamo da li je uneseni iskaz tačan, te ako jeste izvrši se radnja za taj slučaj, a naredbom else ako se izvršava radnja u slučaju da je iskaz bio netačan. Pogledajmo jednostavan primjer.
Primjer 1. Unesi broj. Ako je uneseni broj pozitivan ispiši njegov prethodnik, a ako je negativan ispiši njegov sljedbenik.
#include <iostream>
using namespace std;
int main()
{
int a;
cout<<"Unesi broj:";
cin>>a;
if (a>0) // ako je uneseni broj pozitivan izvršit će se prva naredba ispod uslova if a to je ispis prethodnika
cout<<"Prethodnik je: "<<a-1;
if (a<0) // ako je uneseni broj negativan izvršit će se prva naredba ispod ovog uslova a to je ispis sljedbenika
cout<<"Sljedbenik je: "<<a+1;
system ("PAUSE");
return 0;
}
Kao što se može vidjeti ovaj program radi nešto ako se unese pozitivan ili negativan broj, međutim ako se unese broj nula neće raditi ništa. Pogledajmo isti ovaj primjer, ali umjesto da pravimo 2. if uslova, stavimo jedan if uslov a ako on nije ispunjen koristimo naredbu else
#include <iostream>
using namespace std;
int main()
{
int a;
cout<<"Unesi broj:";
cin>>a;
if (a>0) // ako je uneseni broj pozitivan izvršit će se prva naredba ispod uslova if a to je ispis prethodnika
cout<<"Prethodnik je: "<<a-1;
else //ako uslov nije ispunjen izvršit će se ispis sljedbenika unesenog broja
cout<<"Sljedbenik je: "<<a+1;
system ("PAUSE");
return 0;
}
Osnovna razlika između ovog programa i prethodnog u kojem nije bilo naredbe else je što ovaj program radi nešto i kad se unese nula, tj. on će prvo provjeriti da li je uneseni broj veći od nule, ako jeste ispisat će njegovog prethodnika, a ako nije ispisat će sljedbenika. Tako da kad se unese nula ispisat će sljedbenika pošto uslov nije ispunjen.
Može se desiti u programu i da se desi više slučajeva, tada se koristi naredba else if da se provjere dodatni uslovi. Pogledajmo to na istom primjeru. 

#include <iostream>
using namespace std;
int main()
{
int a;
cout<<"Unesi broj:";
cin>>a;
if (a>0) // ako je uneseni broj pozitivan izvršit će se prva naredba ispod uslova if a to je ispis prethodnika
cout<<"Prethodnik je: "<<a-1;
else if (a<0) //ako je uneseni broj negativan ispisat će se na ekranu njegov sljedbenik
cout<<"Sljedbenik je: "<<a+1; 
else //ako uneseni broj nije pozitivan a ni negativan onda je on 0
cout<<"Uneseni broj je nula."<<endl;
system ("PAUSE");
return 0;
}
Zadatak 1. Za unesena ispisati provjeriti koji je veći te ih ispisati po veličini, veći pa manji. A ako su jednaki ispisati poruku "Uneseni brojevi su jednaki i iznose: " pa taj broj.
Zadatak 2. Napraviti program koji traži od korisnika da unese 2. broja te određeni znak (+ za sabiranje, - za oduzimanje, * za množenje te / za dijeljenje) te u zavisnosti od tog znaka da izvrši određenu radnju i na ekranu ispiše rezultat. Uputa: Za unos znaka sa tastaure se koristi tip podatka char, primjer. char znak ='+'.

nedjelja, 12. listopada 2014.

Unos i ispis podataka

Da bi ispisali podatke u programskom jeziku c++ koristimo naredbu cout, na sljedeći način cout<<"Ovo će se ispisati"; prilikom izvedbe toga na ekranu će se ispisati tekst "Ovo će se ispisati". Međutim programi koji imaju samo mogućnosti samo ispisa i nisu baš nešto korisni, tako da pored ove naredba za neki osnovni rad potrebna je i naredba za unos podataka, a to je naredba cin. Pogledajmo sljedeći program.
Zadatak 1. Napraviti progam koji će za unesena 3 broja ispisati njihovu aritmetičku sredinu.
#include<iostream>
using namespace std;
int main(){
int x,y,z;//deklaracija varijabli za unos tri broja
float s; //deklaracija varijable koja predstavlja aritmetičku sredinu
cout<<"Unesite brojeve:"; //obavještava korisnika da unese 3 broja
cin>>x>>y>>z;// naredba za unos brojeva
s=float(x+y+z)/3;/*dodjeljuje varijabli za aritmetičku sredinu vrijednost po formuli, 
s tim da će varijabla s poprimiti vrijednost koja je tipa flota, jer se vrši konverzija iz int u float tako da rješenje može biti realan broj a ne isključivo cijeli a radi se tako što se stavi float poslije znaka jednakosti */
cout<<"Aritmeticka sredina brojeva: "<<x<<","<<y<<","<<z<<" je: "<<s<<endl; // ispisuje aritmetičku sredinu unesenih brojeva
system("pause"); // pauzira da se ne zatvori automatski
return 0; //vraća vrijednost 0
}
Kao što smo mogli vidjeti u programu se koriste naredbe // i /* neki tekst */ koje služe za opis tog dijela programa (za pisanje komentara). Ako se u programu ne bi vršila konverzija tada bi on za brojeve npr: 6,6 i 8 ispisao aritmetičku vrijednost 6 jer je zbir 6+6+8=20 pa dijeljem sa 3 u cijlim brojevima to iznosi 6, dok nakon što se izvrši konverzija aritmetička vrijednost ove sume je 6.66667.
Zadatak 2. (Uraditi sami!) Napraviti program koji traži od korisnika da unese 4 broja koji predstavljaju dužine stranica nekog četverougla, te na ekranu ispisati obim tog četverougla.
Zadatak 3. (Uraditi sami!) Napraviti program koji traži od korisnika da unese broj minuta (veći od nule) te potom broj minuta pretvoriti u dane, sate i minute na način da se prvo pretvori u koliko je to dana, te potom da se od preostalog broja minuta dobije koliko je to sati te koliko je minuta. (Uputa: Jedan dan ima 24 sata, a 1 sat ima 60 minuta, što znači da jedan dan ima 1440 minuta. Da bi dobili broj minuta koje ostanu nakon što se dobiju dani koristit funkciju za ostatak  % (mod). Ona se koristi na sljedeći način: int x=23%13; vidimo da će x iznositi 10. )

četvrtak, 9. listopada 2014.

Operatori u C++

Osnovni operatori u C++ su aritmetički, relacioni, logički, pridruživanja i inkrementacije ili dekrementacije. 
Aritmetički su: 
  • + sabiranje,
  • -, oduzimanje,
  • * množenje,
  •  / dijeljenje, 
  • %  ostatak.
Relacioni su:
  • < manje od,
  • > veće od,
  • <= manje ili jednako od,
  • >= veće ili jednako od,
  • == jednako, 
  • != raziličito.
Logrički operatori su:
  • && - AND logičko i (tačno je kad su oba tačna) prmijer (2>3)&&(3<2) što je netačno (false),
  • || - OR logičko ili (tačno je kad je bar jedna vrijednost tačna) (2>3)||(2<3) što je tačno (true),
  • ! - logičko ne (ako je vrijednost tačna pretvara je u netačnu i obrnuto) !(2==3) tačno (true).
Operator inkrementacije je ++ a dekremntacije je -- i predstavljaju sljedeće: x++ je ustvari x=x+1; dok bi y-- bilo ustvari y=y-1; . Mogu se ispred i iza varijable. 

Tipovi podataka

Osnovni tipovi podataka u C++  jeziku su: char, int, stringfloat, double, bool. Osim bool-a svi drugi osnovni tipovi podataka se mogu modificirati s kavlifikatorima. Kvalifikatori su: short (kratak),  long (dugačak), unsigned (bez predznaka). Tako npr. moguć je tip podatka short int, long int, long double, short char. Pomoću ovih kvalifikatora mi određujemo da li nam je potreban veći ili manji broj cifara ili slova. Varijabla je objekt čija se vrijednost u toku rada programa može mijenjati. Varijabla tipa bool može poprimiti vrijednosti true (tačno) ili false (netačno). Varijable se prave na način da se prvo napiše tip podatka koji će varijabla biti, nakon toga ime varijable a onda se može toj varijabli pridružiti vrijednost. Primjer varijable tipa int a čije ime je Suma je int Suma; na ovaj način mi smo u memoriji rezervisali prostor za ovu varijablu, ali kao što vidimo nismo joj pridružili nikakvu vrijednost. Ovaj postupak rezervacije samog prostora naziva se deklaracija varijable. Kada toj varijabli pridružimo neku vrijednost onda se to naziva inicijalizacija:
int Suma; deklaracija varijable
Suma=10;  inicijalizacija varijable, iako se to može odviti i jednom procesu kao int Suma=10;  .
Pored varijabli u C++ imamo i konstante, vrijednosti koje se ne mijenjaju tokom rada programa, Njih možemo napraviti na 2. načina:
#define Pi=3.14 pomoću pretprocesorske naredbe define,
const double=3.14; pomoću standardnog načina kao što se i varijable prave gdje se mora voditi računa koji je tip podatka.
Varijable tipa int se odnose na cijele brojeve, tipa double i float na realne brojeve. Varijabla tipa char odnosi se na određeni znak sa tastature, dok tipa string predstavlja neki tekst. 
Primjeri varijabli:
int Suma=10;
float Prosjek= 4.6;
char Slovo='m';
string Rijec="jesen";

Dev C++

Za svaki programski jezik potreban je određeno razvojno okruženje. Za programiranje u C++ postoji nekoliko alata, najpopularniji su Dev C++, Codeblocks te Visual Studio (postoji različit broja verzija od kojih je Express besplatna). U našem radu koristit ćemo Dev C++, može se skinuti sa Dev C++. Nakon toga potrebno ga je instalirati. U toku instalacije postavit će se nekoliko upita pred vas, prvi je da odaberete jezik gdje možete vidjeti da ima i hrvatski, nakon toga pita vas da li prihvaćate uvjete licence i onda vas pita kakvu vrstu instalacije želite tu odaberite full. Poslije toga odaberite mjesto gdje želite da se instalira. Nakon što je instalacija završena treba se izvršiti konfiguracija programa gdje vas prvo pita koji jezik želite koristiti u radu s programom(i tu im hrvatski), nakon toga odaberete font koji ćete koristit, odgovarajuću temui izgled ikona. Odaberete željene opcije te nakon toga odaberete koje headere želite koristiti u radu. Za naš rad dovoljno je opcija recommended. Nakon toga traje vrijeme konfiguracija te poslije toga vam pokrene izgled programa Dev C++.  Da bi započeli sa radom potrebno je započeti određeni projekt ili source kod datoteku. Za početak koristimo source kod datoteku koja će nam otvoriti prazan list.

Napravimo jednostavan program koji će na ekranu ispisati "Hello world!!!" na sljedeći način.
#include <iostream>
using namespace std;
int main() {
cout<<"Hello world"<<endl;
        system("pause");
return 0;
}
Sa F11 ili Naredbe-> Kompajlaj i pokreni provjerimo da li taj program radi. Znak # predstavlja pretprocesorske naredbe (one koje se izvršavaju prije kompajliranja programa). Najčešće se koristi  #include <iostream> koja sadrži naredbe za unos i ispis podataka. Međutim da bi mogli koristit naredbe s jednostavnim pozivanjem moramo uključiti biblioteku standardnih naredbi pomoću using namespace std; . U svakom C++ programu za rad potrebna je funkcija main() gdje se unutar zagrada pišu ulazni parametri koje ta funkcija će koristiti (ako ih dobijamo iz neke druge funkcije), a int ispred funkcije main znači da ta funkcija na kraju mora vratit neki cijeli broj što vidimo u ovom slučaju sa return 0; . Sadržaj funkcije piše se unutar ovakvih zagrada {} koje predstavljaju jedan blok. Naredba za ispis podatka na ekran u C++ je cout<< iza koje idu navodni znaci i određeni tekst. Kao što se može primjetit u C++ svaka naredba završava sa ; . Naredba system("pause"); spriječava program od automatskog zatvaranja nakon što izvrši radnju, tj. omogućava nam da mi zatvorimo program pomoću klika nekom tipkom na tastaturi. Naredba endl označava kraj reda.
U slučaju da ovaj program ne radi na gore navedenoj verziji Dev C++ pokušati sa sljedećom verzijom Dev C++