masterm1nd99

socccccccccc

May 16th, 2019
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <cctype>
  4. using namespace std;
  5.  
  6. class InvalidPassword{
  7. char text[100];
  8. public:
  9. InvalidPassword(const char *text){
  10. strcpy(this->text,text);
  11. }
  12. void message()
  13. {
  14. cout<<text<<endl;
  15. }
  16. };
  17.  
  18. class InvalidEmail{
  19. char text[100];
  20. public:
  21. InvalidEmail(const char *text){
  22. strcpy(this->text,text);
  23. }
  24. void message()
  25. {
  26. cout<<text<<endl;
  27. }
  28. };
  29.  
  30. class MaximumSizeLimit{
  31. int n;
  32. public:
  33. MaximumSizeLimit(int n)
  34. {
  35. this->n=n;
  36. }
  37. void message()
  38. {
  39. cout<<"You can't add more than "<<n<<" users"<<endl;
  40. }
  41. };
  42. class User{
  43. protected:
  44. char username[50];
  45. char password[50];
  46. char email[50];
  47. bool checkPassword()
  48. {
  49. int br1=0,br2=0,br3=0;
  50. for(int i=0;i<49;i++)
  51. {
  52. if(isupper(password[i])) br1++;
  53. if(islower(password[i])) br2++;
  54. if(isdigit(password[i])) br3++;
  55. }
  56. if(br1&&br2&&br3) return true;
  57. return false;
  58. }
  59. bool checkEmail()
  60. {
  61. for(int i=0;i<49;i++)
  62. {
  63. if(email[i]=='@') return true;
  64. }
  65. return false;
  66. }
  67. public:
  68. User(const char *u="",const char *p="",const char *e="")
  69. {
  70. if(checkPassword()==false) throw InvalidPassword("Password is too weak");
  71. else if(checkEmail()==false) throw InvalidEmail("Mail is not valid");
  72. else{
  73. strcpy(username,u);
  74. strcpy(password,p);
  75. strcpy(email,e);
  76. }
  77. }
  78. virtual double popularity()=0;
  79. };
  80.  
  81. class FacebookUser:public User{
  82. private:
  83. int bp,bl,bk;
  84. public:
  85. FacebookUser(const char *u="",const char *p="",const char *e="",int bp=0,int bl=0,int bk=0):User(u,p,e)
  86. {
  87. this->bp=bp;
  88. this->bl=bl;
  89. this->bk=bk;
  90. }
  91. double popularity()
  92. {
  93. return bp+(bl*0.1)+(bk*0.5);
  94. }
  95. };
  96.  
  97. class TwitterUser:public User{
  98. private:
  99. int bs,bt;
  100. public:
  101. TwitterUser(const char *u="",const char *p="",const char *e="",int bs=0,int bt=0):User(u,p,e)
  102. {
  103. this->bs=bs;
  104. this->bt=bt;
  105. }
  106. double popularity()
  107. {
  108. return bs+(bt*0.5);
  109. }
  110. };
  111.  
  112. class SocialNetwork{
  113. private:
  114. User **niza;
  115. int broj;
  116. static int max;
  117. public:
  118. SocialNetwork(){
  119. broj=0;
  120. niza=new User*[max];
  121. }
  122. SocialNetwork &operator+=(User *u)
  123. {
  124. niza[broj++]=u;
  125. return *this;
  126. }
  127. double avgPopularity()
  128. {
  129. double av=0;
  130. for(int i=0;i<broj;i++)
  131. {
  132. av+=niza[i]->popularity();
  133. }
  134. return av/broj;
  135. }
  136. void changeMaximumSize(int n)
  137. {
  138. max=n;
  139. }
  140.  
  141. };
  142.  
  143.  
  144. int SocialNetwork::max=5;
  145.  
  146.  
  147. int main() {
  148.  
  149. SocialNetwork network = SocialNetwork();
  150. int n;
  151. cin >> n;
  152. char username[50];
  153. char password[50];
  154. char email[50];
  155. int userType;
  156. for (int i=0; i < n; ++i) {
  157. cin >> username;
  158. cin >> password;
  159. cin >> email;
  160. cin >> userType;
  161. if (userType == 1) {
  162. int friends;
  163. int likes;
  164. int comments;
  165. cin >> friends >> likes >> comments;
  166.  
  167. // TODO: Try-catch
  168. try{
  169. User * u = new FacebookUser(username,password,email,friends,likes,comments);
  170. network += u;
  171. }
  172. catch(InvalidPassword obj)
  173. {
  174. obj.message();
  175. }
  176. catch(MaximumSizeLimit obj)
  177. {
  178. obj.message();
  179. }
  180. catch(InvalidEmail obj)
  181. {
  182. obj.message();
  183. }
  184.  
  185. }
  186. else {
  187. int followers;
  188. int tweets;
  189. cin >> followers >> tweets;
  190.  
  191. // TODO: Try-catch
  192. User * u= new TwitterUser(username,password,email,followers,tweets);
  193. network += u;
  194.  
  195. }
  196.  
  197. }
  198. network.changeMaximumSize(6);
  199. cin >> username;
  200. cin >> password;
  201. cin >> email;
  202. int followers;
  203. int tweets;
  204. cin >> followers >> tweets;
  205.  
  206. // TODO: Try-catch
  207. User * u= new TwitterUser(username,password,email,followers,tweets);
  208. network += u;
  209.  
  210. cout << network.avgPopularity();
  211.  
  212. }
Add Comment
Please, Sign In to add comment