Advertisement
simov

OOP | Lab 2

Mar 27th, 2013
773
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.27 KB | None | 0 0
  1. /* ------- ООП - Лаб. вежби 2 -------
  2. ----------------------------------
  3. 1-ва задача [АГОЛ]
  4. ----------------------------------
  5. Да се развие податочна структура Agol која ќе биде претставена со степени, минути и секунди. Потоа да се напишат функции во рамки на структурата за операциите собирање и одземање на два агли. Степените, минутите и секундите се цели броеви. Секој агол се прикажува во форматот st°min’sec”. Аголот е во границите од 0°0’0” до 359°59’59”.
  6. ----------------------------------
  7. Sample input:
  8. 70 15 40 30 20 45
  9.  
  10. Sample output:
  11. 70 15 40
  12. +
  13. 30 20 45
  14. =
  15. 100 36 25
  16. 70 15 40
  17. -
  18. 30 20 45
  19.  =
  20. 39 54 55
  21. ---------------------------------- */
  22. #include <iostream>
  23. using namespace std;
  24.  
  25. // vashiot kod ovde
  26. struct Agol{
  27. int stepeni,minuti,sekundi;
  28.     Agol soberi(Agol a2){
  29.     Agol rez;
  30.         rez.stepeni=0;
  31.         rez.minuti=0;
  32.         rez.sekundi=0;
  33.        
  34.     rez.sekundi=sekundi+a2.sekundi;
  35.         if(rez.sekundi>=60){rez.sekundi-=60; rez.minuti++;}
  36.         rez.minuti+=minuti+a2.minuti;
  37.         if(rez.minuti>=60){rez.minuti-=60; rez.stepeni++;}
  38.         rez.stepeni+=stepeni+a2.stepeni;
  39.         if(rez.stepeni>360)rez.stepeni-=360;
  40.        
  41.         return rez;
  42.     }
  43.     Agol odzemi(Agol a2){
  44.     Agol rez;
  45.         rez.stepeni=0;
  46.         rez.minuti=0;
  47.         rez.sekundi=0;
  48.        
  49.         rez.sekundi=sekundi-a2.sekundi;
  50.         if(rez.sekundi<=60){rez.sekundi+=60; rez.minuti--;}
  51.         rez.minuti+=minuti-a2.minuti;
  52.         if(a2.minuti>minuti){rez.minuti+=60; rez.stepeni--;}
  53.         rez.stepeni+=stepeni-a2.stepeni;
  54.         if(rez.stepeni<0)rez.stepeni+=360;
  55.        
  56.         return rez;
  57.     }
  58.     void pecati(){
  59.         if(stepeni<10)cout<<0;
  60.         cout<<stepeni<<" ";
  61.         if(minuti<10)cout<<0;
  62.         cout<<minuti<<" ";
  63. if(sekundi<10)cout<<0;
  64.         cout<<sekundi<<"\n";
  65.     }
  66. };
  67.  
  68. int main() {
  69.     Agol a1,a2;
  70.     cin >> a1.stepeni >> a1.minuti >> a1.sekundi;
  71.     cin >> a2.stepeni >> a2.minuti >> a2.sekundi;
  72.     a1.pecati();
  73.     cout << "+" << endl;
  74.     a2.pecati();    
  75.     Agol a = a1.soberi(a2);
  76.     cout << "=" << endl;
  77.     a.pecati();
  78.     a1.pecati();
  79.     cout << "-" << endl;
  80.     a2.pecati();    
  81.     a = a1.odzemi(a2);
  82.     cout << " = " << endl;
  83.     a.pecati();
  84.     return 0;
  85. }
  86. /* ----------------------------------
  87. 2-ра задача [КРУГ]
  88. ----------------------------------
  89. Да се дефинира класа Krug, во која се чуваат информации за:
  90. -радиус float
  91. -бројот π const float.
  92.  
  93. Во класата да се реализираат:
  94. -default конструктор и конструктор со аргументи
  95. -метод за пресметување плоштина
  96. -метод за пресметување периметар.
  97. ----------------------------------
  98. Sample input:
  99. 5
  100.  
  101. Sample output:
  102. 31.4
  103. 78.5
  104. ---------------------------------- */
  105. #include <iostream>
  106. using namespace std;
  107.  
  108. class Krug {
  109. private:
  110.     float rad;
  111.     static const float pi=3.14;
  112.     public:
  113.     Krug(float r){rad=r;}
  114.    
  115.     Krug(){rad=0;}
  116.    
  117.         ~Krug(){}
  118.    
  119.     float perimetar(){return 2*rad*pi;}
  120.     float plostina(){return rad*rad*pi;}
  121. };
  122.  
  123. int main() {
  124. float r;
  125. cin >> r;
  126. // Konstruktor so argumenti
  127. Krug k(r);
  128. cout << k.perimetar() << endl;
  129. cout << k.plostina() << endl;
  130. // default konstruktor
  131. Krug x;
  132. return 0;
  133. }
  134. /* ----------------------------------
  135. 3-та задача [ФИЛМ]
  136. ----------------------------------
  137. Да се дефинира класа Film, во која ќе се чуваат информации за:
  138. -име низа од 100 знаци
  139. -режисер низа од 50 знаци
  140. -жанр низа од 50 знаци
  141. -година цел број
  142.  
  143. Сите променливи треба да бидат приватни. Соодветно во рамките на класата да се дефинираат:
  144. -default конструктор и конструктор со аргументи
  145. -метод за печатење на информациите за филмот
  146.  
  147. Дополнително да се реализира надворешна функција:
  148. -void pecati_po_godina(Film *f, int n, int godina) која ќе прима аргумент низа од филмови, вкупниот број на филмови и година, а треба да ги отпечати само филмовите кои се направени во дадената година.
  149. ----------------------------------
  150. Sample input:
  151. 4
  152. Frankenweenie
  153. Tim_Burton
  154. Animation
  155. 2012
  156. Lincoln
  157. Steven_Spielberg
  158. History
  159. 2012
  160. Wall-E
  161. Andrew_Stanton
  162. Animation
  163. 2008
  164. Avatar
  165. James_Cameron
  166. Fantasy
  167. 2009
  168. 2008
  169.  
  170. Sample output:
  171. Ime: Frankenweenie
  172. Reziser: Tim_Burton
  173. Zanr: Animation
  174. Godina: 2012
  175. Ime: Lincoln
  176. Reziser: Steven_Spielberg
  177. Zanr: History
  178. Godina: 2012
  179. Ime: Wall-E
  180. Reziser: Andrew_Stanton
  181. Zanr: Animation
  182. Godina: 2008
  183. Ime: Avatar
  184. Reziser: James_Cameron
  185. Zanr: Fantasy
  186. Godina: 2009
  187. Ime: Wall-E
  188. Reziser: Andrew_Stanton
  189. Zanr: Animation
  190. Godina: 2008
  191. ---------------------------------- */
  192. #include <iostream>
  193. #include <cstring>
  194. using namespace std;
  195. class Film
  196. {
  197. private:
  198.  
  199. char ime[100];
  200. char reziser[50];
  201. char zanr[50];
  202. int godina;
  203. public:
  204. friend void pecati_po_godina(Film* ,int ,int);
  205. Film(){};
  206. Film(char *name,char *rez,char *zan,int god)
  207. {
  208. strcpy(ime,name);
  209. strcpy(reziser,rez);
  210. strcpy(zanr,zan);
  211. godina=god;
  212. }
  213. void pecati()
  214. {
  215. cout<<"Ime: "<<ime<<endl;
  216. cout<<"Reziser: "<<reziser<<endl;
  217. cout<<"Zanr: "<<zanr<<endl;
  218. cout<<"Godina: "<<godina<<endl;
  219. }
  220. };
  221. void pecati_po_godina(Film* f,int n,int godina){
  222. for(int i=0;i<n;i++)if(f[i].godina==godina)f[i].pecati();
  223. }
  224. int main() {
  225. int n;
  226. cin >> n;
  227. Film f[n];
  228. for(int i = 0; i < n; ++i) {
  229. char ime[100];
  230. char reziser[50];
  231. char zanr[50];
  232. int godina;
  233. cin >> ime;
  234. cin >> reziser;
  235. cin >> zanr;
  236. cin >> godina;
  237. f[i] = Film(ime, reziser, zanr, godina);
  238. f[i].pecati();
  239. }
  240. int godina;
  241. cin >> godina;
  242. pecati_po_godina(f, n, godina);
  243. return 0;
  244. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement