Advertisement
Guest User

jksndfsd

a guest
Sep 18th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  1. #include <iostream>
  2. #include<cstring>
  3.  
  4. using namespace std;
  5.  
  6. class User {
  7. protected:
  8. char username[50];
  9. char password[50];
  10. char email[50];
  11. public:
  12. User(const char *username="",const char *password="",const char *email="") {
  13. strcpy(this->username,username);
  14. strcpy(this->password,password);
  15. strcpy(this->email,email);
  16. }
  17. virtual double popularity() {}
  18. ~User();
  19. };
  20.  
  21. class FacebookUser:public User {
  22. private:
  23. int prijateli;
  24. int lajkovi;
  25. int komentari;
  26. public:
  27. FacebookUser(const char *username="",const char *password="",const char *email="",int prijateli=0,int lajkovi=0,int komentari=0):User(username,password,email) {
  28. this->prijateli=prijateli;
  29. this->lajkovi=lajkovi;
  30. this->komentari=komentari;
  31. }
  32. double popularity() {
  33. return (double)prijateli+((double)lajkovi*0.1)+((double)komentari*0.5);
  34. }
  35.  
  36. };
  37.  
  38. class TwitterUser:public User {
  39. private:
  40. int sledaci;
  41. int tvitovi;
  42. public:
  43. TwitterUser(const char *username="",const char *password="",const char *email="",int sledaci=0,int tvitovi=0):User(username,password,email) {
  44. this->sledaci=sledaci;
  45. this->tvitovi=tvitovi;
  46. }
  47. TwitterUser(const TwitterUser &tu) {
  48. strcpy(username,tu.username);
  49. strcpy(password,tu.password);
  50. strcpy(email,tu.email);
  51. sledaci=tu.sledaci;
  52. tvitovi=tu.tvitovi;
  53. }
  54. double popularity() {
  55. return (double)sledaci+((double)tvitovi*0.5);
  56. }
  57. };
  58.  
  59. class SocialNetwork {
  60. private:
  61. User **korisnici;
  62. int brKorisnici;
  63. static int MAX;
  64. public:
  65. SocialNetwork() {
  66. korisnici=new User*[0];
  67. this->brKorisnici=0;
  68. }
  69. SocialNetwork& operator +=(User *u) {
  70. User **tmp=new User *[brKorisnici+1];
  71. for(int i=0; i<brKorisnici; i++) {
  72. tmp[i]=korisnici[i];
  73. }
  74. tmp[brKorisnici++]=u;
  75. delete[]korisnici;
  76.  
  77. korisnici=tmp;
  78.  
  79. return *this;
  80. }
  81. ~SocialNetwork() {
  82. delete[] korisnici;
  83. }
  84.  
  85. double avgPopularity() {
  86. double vkupno=0;
  87. for(int i=0; i<brKorisnici; i++) {
  88. vkupno+=korisnici[i]->popularity();
  89. }
  90. return vkupno/brKorisnici;
  91. }
  92. static int changeMaximumSize(int number) {
  93. MAX=number;
  94. }
  95.  
  96.  
  97. };
  98. int SocialNetwork::MAX=5;
  99. int main() {
  100.  
  101. SocialNetwork network = SocialNetwork();
  102. int n;
  103. cin >> n;
  104. char username[50];
  105. char password[50];
  106. char email[50];
  107. int userType;
  108. for (int i=0; i < n; ++i) {
  109. cin >> username;
  110. cin >> password;
  111. cin >> email;
  112. cin >> userType;
  113. if (userType == 1) {
  114. int friends;
  115. int likes;
  116. int comments;
  117. cin >> friends >> likes >> comments;
  118.  
  119. // TODO: Try-catch
  120. User * u = new FacebookUser(username,password,email,friends,likes,comments);
  121. network += u;
  122.  
  123. } else {
  124. int followers;
  125. int tweets;
  126. cin >> followers >> tweets;
  127.  
  128. // TODO: Try-catch
  129. User * u= new TwitterUser(username,password,email,followers,tweets);
  130. network += u;
  131.  
  132. }
  133.  
  134. }
  135. network.changeMaximumSize(6);
  136. cin >> username;
  137. cin >> password;
  138. cin >> email;
  139. int followers;
  140. int tweets;
  141. cin >> followers >> tweets;
  142.  
  143. // TODO: Try-catch
  144. User * u= new TwitterUser(username,password,email,followers,tweets);
  145. network += u;
  146.  
  147. cout << network.avgPopularity();
  148.  
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement