Guest User

Untitled

a guest
Jul 28th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.92 KB | None | 0 0
  1. #pragma once
  2. #pragma warning(disable:4996)
  3. #include<iostream>
  4. #include<string.h>
  5. #include<iomanip>
  6. #include<ctime>
  7. using namespace std;
  8.  
  9. class Student {
  10. char *surname;
  11. int *rating;
  12. int sizeArr;
  13. double average;
  14. public:
  15. Student();
  16. Student(char*, int*, int);
  17. Student(const Student&);
  18. //set():
  19. void setSurname();
  20. void setSize();
  21. void RandRating();
  22. void setRatings();
  23. void setAver(double aver){ average = aver; }
  24. // get():
  25. char *getSur()const;
  26. int getSize()const;
  27. int *getR();
  28. double getAverage()const{ return average; }
  29. void set();
  30. void print();
  31. int MAX(); int MIN(); int SUM();
  32. double S_A();
  33. Student mostLess(Student*);
  34. Student mostMore(Student*);
  35. int& getMark(int);
  36. Student & operator=(const Student&);
  37. Student & operator+(const Student&);
  38. Student operator-(const Student&);
  39. Student & operator+=(const Student&);
  40. bool operator>(Student&);
  41. bool operator<(Student&);
  42. bool operator>=(Student&);
  43. bool operator<=(Student&);
  44. bool operator==(Student&);
  45. bool operator!=(Student&);
  46. int &operator[](int S) { return rating[S]; }
  47. int operator()(int);
  48. Student operator++();
  49. Student operator++(int);
  50. Student operator--();
  51. Student operator--(int);
  52. ~Student() { delete[]surname; delete[]rating; }
  53. };
  54. ostream &operator<<(ostream &os, Student &st);
  55. istream &operator>>(istream &is, Student st);
  56. Student::Student() :surname(NULL), rating(0), average(0) { surname = new char[50]; rating = new int[20]; sizeArr = 12; }
  57. Student::Student(char*surname, int *r, int z) {
  58. surname = new char[strlen(surname + 1)];
  59. strcpy(this->surname, surname);
  60. sizeArr = z; rating = new int[sizeArr];
  61. for (int i(0); i < sizeArr; i++){ rating[i] = r[i]; }
  62. average = 0;
  63. }
  64. Student::Student(const Student &st) {
  65. surname = new char[50]; rating = new int[20];
  66. strcpy(this->surname, st.surname);
  67. sizeArr = st.sizeArr;
  68. for (int i(0); i < sizeArr; i++){ rating[i] = st.rating[i]; }
  69. average = st.average;
  70. }
  71. void Student::setSurname() {
  72. cout << "Surname: "; cin >> surname;
  73. }
  74. void Student::setSize(){
  75. cout << "Input number Student"<<"\n"<<" (six for example): "; cin >> sizeArr;
  76. }
  77. void Student::setRatings() {
  78. for (int i = 0; i < sizeArr; i++) {
  79. cout << "Input rating from " << i + 1 << " to " << sizeArr << "\n";
  80. cin >> rating[i];
  81. }
  82. S_A();
  83. }
  84. void Student::RandRating() {
  85. for (int i(0); i < sizeArr; i++)
  86. rating[i] = rand() % 12+1;
  87. }
  88. char *Student::getSur() const{ return surname; }
  89. int *Student::getR() { return rating; }
  90. int Student::getSize() const{ return sizeArr; }
  91. void Student::set(){
  92. cout << "Surname: "; cin >> surname;
  93. RandRating();
  94. //setRatings();
  95. S_A();
  96. }
  97. void Student::print() {
  98. cout << "\n\nSurname: " << surname ;
  99. cout << "\nRating for 1 year is: \n";
  100. for (int i(0); i < sizeArr; i++) {
  101. cout << setw(5) << rating[i] ;
  102. }
  103. cout << "\nAverage is: " <<S_A() << "\n\n";
  104. }
  105. int Student::MAX() {
  106. int pos(0);
  107. int max = rating[0];
  108. for (int i = 0; i < sizeArr; i++) {
  109. if (max < rating[i]) {
  110. max = rating[i];
  111. pos = i;
  112. }
  113. }
  114. return max;
  115. }
  116. int Student::MIN() {
  117. int pos(0);
  118. int min = rating[0];
  119. for (int i = 0; i < sizeArr; i++) {
  120. if (min > rating[i]) {
  121. min = rating[i];
  122. pos = i;
  123. }
  124. }
  125. return min;
  126. }
  127. int Student::SUM() {
  128. int sum(0);
  129. for (int i = 0; i < sizeArr; i++) {
  130. sum += rating[i];
  131. }
  132. return sum;
  133. }
  134. double Student::S_A() {
  135. int sum(0);
  136. for (int i(0); i < sizeArr; i++) {
  137. sum+=rating[i];
  138. }
  139. return (double)sum / sizeArr;
  140. }
  141. int& Student::getMark(int index) {
  142. return rating[index];
  143. }
  144. Student Student::mostLess(Student *s){
  145. int min = s->rating[0], pos(0);
  146. for (int i(0); i < sizeArr; i++){
  147. if (min < s->rating[i]){
  148. pos = i;
  149. min = s->rating[i];
  150. }
  151. }return s[pos];
  152. }
  153. Student Student::mostMore(Student *s){
  154. int max = s->rating[0], pos(0);
  155. for (int i(0); i < sizeArr; i++){
  156. if (max > s->rating[i]){
  157. pos = i;
  158. max = s->rating[i];
  159. }
  160. }return s[pos];
  161. }
  162. //////////////////////////////////////////////////////////////////////////////////////
  163. Student &Student::operator=(const Student &s) {
  164. delete[]rating;
  165. sizeArr = s.sizeArr;
  166. rating = new int[sizeArr];
  167. for (int i(0); i < sizeArr; i++) {
  168. rating[i] = s.rating[i];
  169. }
  170. return *this;
  171. }
  172. Student &Student::operator+(const Student &sS) {
  173. Student tmp; tmp = sS;
  174. tmp.average = this->average+ sS.average;
  175. return tmp;
  176. }
  177. Student Student::operator-(const Student&sS) {
  178. Student tmp; tmp = sS;
  179. tmp.average = this->average - sS.average;
  180. return tmp;
  181. }
  182. Student &Student::operator+=(const Student& sPD) {
  183. Student tmp;
  184. for (int i(0); i < sizeArr; i++) {
  185. this->rating[i] += tmp.rating[i];
  186. }
  187. return *this;
  188. }
  189. bool Student::operator>(Student &more) {
  190. return this->S_A() > more.S_A();
  191. }
  192. bool Student::operator<(Student &small) {
  193. return this->S_A() < small.S_A();
  194. }
  195. bool Student::operator>=(Student &moreR) {
  196. return this->S_A() >= moreR.S_A();
  197. }
  198. bool Student::operator<=(Student &smallR) {
  199. return this->S_A() <= smallR.S_A();
  200. }
  201. bool Student::operator==(Student &R) {
  202. return this->S_A() == R.S_A();
  203. }
  204. bool Student::operator!=(Student &N) {
  205. return this->S_A() != N.S_A();
  206. }
  207. Student Student::operator++() {
  208. for (int i(0); i < sizeArr; i++) {
  209. ++rating[i];
  210. setAver(S_A());
  211. return *this;
  212. }
  213. }
  214. Student Student::operator++(int) {
  215. Student tmp = *this;
  216. for (int i(0); i < sizeArr; i++) {
  217. (this->rating[i])++;
  218. }
  219. return tmp;
  220. }
  221. Student Student::operator--() {
  222. for (int i(0); i < sizeArr; i++) {
  223. --rating[i];
  224. setAver(S_A());
  225. return *this;
  226. }
  227. }
  228. Student Student::operator--(int) {
  229. Student tmp = *this;
  230. for (int i(0); i < sizeArr; i++) {
  231. (this->rating[i])--;
  232. }
  233. return tmp;
  234. }
  235. int Student::operator ()(int x) {
  236. for (int i = 0; i < sizeArr; i++) {
  237. if (rating[i] == x) {
  238. return i;
  239. }
  240. }
  241. return -1;
  242. }
  243. //Func for: cout<< & cin>>
  244. ostream &operator<<(ostream &os, Student &st) {
  245. os << st.getSur();
  246. return os;
  247. }
  248. istream &operator>>(istream &is, Student st) {
  249. st.setSurname();
  250. cout << "Input rating: ";
  251. for (int i = 0; i < st.getSize(); i++) {
  252. cin >> st.getMark(i);
  253. }
  254. st.setAver(st.S_A());
  255. return is;
  256. }
  257. void main(){
  258. srand(time(NULL));
  259. Student s; s.setSize();
  260. Student *st = new Student[s.getSize()];
  261. for (int i(0); i < s.getSize(); i++){ cout << " Student "<< i + 1 <<" \n " ; st[i].set(); }
  262. for (int i(0); i < s.getSize(); i++) st[i].print();
  263.  
  264. cout << "\nMIN rating: ";
  265. for (int i(0); i < s.getSize(); i++){ cout << st[i].MIN() << " "; }
  266. cout << "\nMAX rating: ";
  267. for (int i(0); i < s.getSize(); i++){ cout << st[i].MAX() << " "; }
  268. cout << "\n\nStudent who have more less rating is: " << st->mostLess(st) << "\n";
  269. cout << "\n\nStudent who have most Hight rating is: " << st->mostMore(st) << "\n\n\n";
  270. //for (int i(0); i < s.getSize(); i++){
  271. // if (st[i].getR() > st[i].MIN())
  272. // cout<<st[i].getMark(st[i].MAX());
  273. //}
  274. system("pause");
  275. }
Advertisement
Add Comment
Please, Sign In to add comment