Advertisement
borisdexter

Oglasnik od code

Jan 28th, 2020
471
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.62 KB | None | 0 0
  1. #include<iostream>
  2. #include<string.h>
  3. #include<cstdlib>
  4. #include<climits>
  5. using namespace std;
  6.  
  7. class NegativnaVrednost{
  8. private:
  9. char error[100];
  10. public:
  11. NegativnaVrednost(){}
  12. NegativnaVrednost(char error[]){
  13. strcpy(this->error,error);
  14. }
  15. void print(){
  16. cout<<error<<endl;
  17. }
  18. };
  19.  
  20. class Oglas{
  21. private:
  22. char naslov[50];
  23. char kategorija[30];
  24. char opis[100];
  25. float cena;
  26. public:
  27. Oglas(){}
  28.  
  29. Oglas(char naslov[],char *kategorija,char opis[],float cena){
  30. strcpy(this->naslov,naslov);
  31. strcpy(this->kategorija,kategorija);
  32. strcpy(this->opis,opis);
  33. this->cena=cena;
  34. }
  35.  
  36. bool operator>(Oglas &objekt){
  37. if(this->cena>objekt.cena){
  38. return true;
  39. }else{
  40. return false;
  41. }
  42. }
  43.  
  44.  
  45. char* getNaslov(){
  46. return naslov;
  47. }
  48. char* getOpis(){
  49. return opis;
  50. }
  51. char* getKategorija(){
  52. return kategorija;
  53. }
  54. float getCena(){
  55. return cena;
  56. }
  57.  
  58. friend ostream &operator<<(ostream &output,Oglas &objekt){
  59. output<<objekt.naslov<<endl<<objekt.opis<<endl<<objekt.cena<<" evra"<<endl;
  60. return output;
  61. }
  62.  
  63. ~Oglas(){}
  64.  
  65. };
  66.  
  67. class Oglasnik{
  68. private:
  69. char ime[20];
  70. Oglas *oglasi;
  71. int brojOglasi;
  72. public:
  73. Oglasnik(){
  74. oglasi=new Oglas[0];
  75. brojOglasi=0;
  76. }
  77.  
  78. Oglasnik(char ime[]){
  79. strcpy(this->ime,ime);
  80. oglasi=new Oglas[0];
  81. brojOglasi=0;
  82. }
  83.  
  84. //oglasnik+=oglas;
  85. Oglasnik &operator+=(Oglas &novOglas){
  86. if(novOglas.getCena()<0){
  87. throw NegativnaVrednost("Oglasot ima nevalidna vrednost za cenata i nema da bide evidentiran!");
  88. }
  89. Oglas *tempNiza=new Oglas[brojOglasi];
  90. for(int i=0;i<brojOglasi;i++){
  91. tempNiza[i]=oglasi[i];
  92. }
  93. oglasi=new Oglas[brojOglasi+1];
  94. for(int i=0;i<brojOglasi;i++){
  95. oglasi[i]=tempNiza[i];
  96. }
  97. oglasi[brojOglasi]=novOglas;
  98. brojOglasi++;
  99. delete []tempNiza;
  100. return *this;
  101. }
  102.  
  103. friend ostream &operator<<(ostream &output, Oglasnik &objekt){
  104. output<<objekt.ime<<endl;
  105. for(int i=0;i<objekt.brojOglasi;i++){
  106. output<<objekt.oglasi[i].getNaslov()<<endl;
  107. output<<objekt.oglasi[i].getOpis()<<endl;
  108. output<<objekt.oglasi[i].getCena()<<" evra"<<endl;
  109. output<<endl;
  110. }
  111. return output;
  112. }
  113.  
  114. void oglasiOdKategorija(const char *k){
  115. for(int i=0;i<brojOglasi;i++){
  116. if(strcmp(oglasi[i].getKategorija(),k)==0){
  117. cout<<oglasi[i];
  118. }
  119. }
  120. }
  121.  
  122. void najniskaCena(){
  123. float minCena=9999999;
  124. int pamtiIndex;
  125. for(int i=0;i<brojOglasi;i++){
  126. if(oglasi[i].getCena()<minCena){
  127. minCena=oglasi[i].getCena();
  128. pamtiIndex=i;
  129. }
  130. }
  131. cout<<oglasi[pamtiIndex];
  132. }
  133.  
  134. ~Oglasnik(){
  135. delete []oglasi;
  136. }
  137. };
  138. int main(){
  139. char naslov[50];
  140. char kategorija[30];
  141. char opis[100];
  142. float cena;
  143. char naziv[50];
  144. char k[30];
  145. int n;
  146.  
  147. int tip;
  148. cin>>tip;
  149.  
  150. if (tip==1){
  151. cout<<"-----Test Oglas & operator <<-----" <<endl;
  152. cin.get();
  153. cin.getline(naslov,49);
  154. cin.getline(kategorija,29);
  155. cin.getline(opis,99);
  156. cin>>cena;
  157. Oglas o(naslov, kategorija, opis, cena);
  158. cout<<o;
  159. }
  160. else if (tip==2){
  161. cout<<"-----Test Oglas & operator > -----" <<endl;
  162. cin.get();
  163. cin.getline(naslov,49);
  164. cin.getline(kategorija,29);
  165. cin.getline(opis,99);
  166. cin>>cena;
  167. Oglas o1(naslov, kategorija, opis, cena);
  168. cin.get();
  169. cin.getline(naslov,49);
  170. cin.getline(kategorija,29);
  171. cin.getline(opis,99);
  172. cin>>cena;
  173. Oglas o2(naslov, kategorija, opis, cena);
  174. if (o1>o2) cout<<"Prviot oglas e poskap."<<endl;
  175. else cout<<"Prviot oglas ne e poskap."<<endl;
  176. }
  177. else if (tip==3){
  178. cout<<"-----Test Oglasnik, operator +=, operator << -----" <<endl ;
  179. cin.get();
  180. cin.getline(naziv,49);
  181. cin>>n;
  182. Oglasnik ogl(naziv);
  183. for (int i = 0; i < n; i++){
  184. cin.get();
  185. cin.getline(naslov,49);
  186. cin.getline(kategorija,29);
  187. cin.getline(opis,99);
  188. cin>>cena;
  189. Oglas o(naslov, kategorija, opis, cena);
  190. ogl+=o;
  191. }
  192. cout<<ogl;
  193. }
  194. else if (tip==4){
  195. cout<<"-----Test oglasOdKategorija -----" <<endl ;
  196. cin.get();
  197. cin.getline(naziv,49);
  198. cin>>n;
  199. Oglasnik ogl(naziv);
  200. for (int i = 0; i < n; i++){
  201. cin.get();
  202. cin.getline(naslov,49);
  203. cin.getline(kategorija,29);
  204. cin.getline(opis,99);
  205. cin>>cena;
  206. Oglas o(naslov, kategorija, opis, cena);
  207. ogl+=o;
  208. }
  209. cin.get();
  210. cin.getline(k,29);
  211. cout<<"Oglasi od kategorijata: " <<k<<endl;
  212. ogl.oglasiOdKategorija(k);
  213.  
  214. }
  215. else if (tip==5){
  216. cout<<"-----Test Exception -----" <<endl ;
  217. cin.get();
  218. cin.getline(naziv,49);
  219. cin>>n;
  220. Oglasnik ogl(naziv);
  221. for (int i = 0; i < n; i++){
  222. cin.get();
  223. cin.getline(naslov,49);
  224. cin.getline(kategorija,29);
  225. cin.getline(opis,99);
  226. cin>>cena;
  227. Oglas o(naslov, kategorija, opis, cena);
  228. ogl+=o;
  229. }
  230. cout<<ogl;
  231.  
  232. }
  233. else if (tip==6){
  234. cout<<"-----Test najniskaCena -----" <<endl ;
  235. cin.get();
  236. cin.getline(naziv,49);
  237. cin>>n;
  238. Oglasnik ogl(naziv);
  239. for (int i = 0; i < n; i++){
  240. cin.get();
  241. cin.getline(naslov,49);
  242. cin.getline(kategorija,29);
  243. cin.getline(opis,99);
  244. cin>>cena;
  245. Oglas o(naslov, kategorija, opis, cena);
  246. ogl+=o;
  247. }
  248. cout<<"Oglas so najniska cena:"<<endl;
  249. ogl.najniskaCena();
  250.  
  251. }
  252. else if (tip==7){
  253. cout<<"-----Test All -----" <<endl ;
  254. cin.get();
  255. cin.getline(naziv,49);
  256. cin>>n;
  257. Oglasnik ogl(naziv);
  258. for (int i = 0; i < n; i++){
  259. cin.get();
  260. cin.getline(naslov,49);
  261. cin.getline(kategorija,29);
  262. cin.getline(opis,99);
  263. cin>>cena;
  264. Oglas o(naslov, kategorija, opis, cena);
  265. ogl+=o;
  266. }
  267. cout<<ogl;
  268.  
  269. cin.get();
  270. cin.get();
  271. cin.getline(k,29);
  272. cout<<"Oglasi od kategorijata: " <<k<<endl;
  273. ogl.oglasiOdKategorija(k);
  274.  
  275. cout<<"Oglas so najniska cena:"<<endl;
  276. ogl.najniskaCena();
  277.  
  278. }
  279.  
  280. return 0;
  281. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement