Advertisement
avr39ripe

cppStudentStructBase

Feb 20th, 2021
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. const uint8_t marksCount{ 3 };
  4.  
  5. struct Student
  6. {
  7.     uint32_t id;
  8.     char* name;
  9.     uint8_t marks[marksCount];
  10. };
  11.  
  12.  
  13. void initStudent(Student& stud, uint32_t id, const char* name, const uint8_t* marks)
  14. {
  15.     stud.id = id;
  16.     int nameLen;
  17.     nameLen = strlen(name) + 1;
  18.     stud.name = new char[nameLen];
  19.     strcpy_s(stud.name, nameLen, name);
  20.  
  21.     for (int i{ 0 }; i < marksCount; ++i)
  22.     {
  23.         stud.marks[i] = marks[i];
  24.     }
  25. }
  26.  
  27. float getAvgGrade(const Student& stud)
  28. {
  29.     int sum{ 0 };
  30.     for (int i{ 0 }; i < marksCount; ++i)
  31.     {
  32.         sum += stud.marks[i];
  33.     }
  34.     return ((float)sum / marksCount);
  35. }
  36.  
  37. void printStudent(const Student& stud, bool detail = false)
  38. {
  39.     std::cout << "Student: " << stud.name << "\nId: " << stud.id << '\n';
  40.     if (detail)
  41.     {
  42.         for (int i{ 0 }; i < marksCount; ++i)
  43.         {
  44.             std::cout << "Mark# " << i << " - " << (int)stud.marks[i] << '\n';
  45.         }
  46.     }
  47.     std::cout << "Average grade: " << getAvgGrade(stud) << '\n';
  48. }
  49.  
  50.  
  51. int main()
  52. {
  53.     //Student stud1;
  54.  
  55.     //stud1.id = 42;
  56.     //stud1.name = new char[15]{ "Vasilij" };
  57.     //stud1.marks[0] = 7;
  58.     //stud1.marks[1] = 9;
  59.     //stud1.marks[2] = 11;
  60.  
  61.  
  62.     //std::cout << "Student: " << stud1.name << "\nId: " << stud1.id << '\n';
  63.     //int sum{ 0 };
  64.     //for (int i{ 0 }; i < marksCount; ++i)
  65.     //{
  66.     //  std::cout << "Mark# " << i << " - " << (int)stud1.marks[i] << '\n';
  67.     //  sum += stud1.marks[i];
  68.     //}
  69.     //std::cout << "Average grade: " << ((float)sum / marksCount) << '\n';
  70.  
  71.     //delete[] stud1.name;
  72.  
  73.     /*Student stud1;
  74.  
  75.     uint8_t marks[marksCount]{ 7,9,11 };
  76.     initStudent(stud1,42, "Vasilij", marks);
  77.     printStudent(stud1);*/
  78.  
  79.     const int studentsCount{ 3 };
  80.     Student students[studentsCount];
  81.     initStudent(students[0], 42, "Vasilij", new uint8_t[marksCount] {7,9,11});
  82.     students[0].id = -17;
  83.     students[0].marks[0] = -23;
  84.     students[0].marks[1] = 57;
  85.     students[0].name = nullptr;
  86.  
  87.     initStudent(students[1], 67, "Petr", new uint8_t[marksCount]{ 10,8,12 });
  88.     initStudent(students[2], 33, "Ignat", new uint8_t[marksCount]{ 11,11,6 });
  89.  
  90.     for (int i{ 0 }; i < studentsCount; ++i)
  91.     {
  92.         printStudent(students[i],true);
  93.         std::cout << '\n';
  94.     }
  95.  
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement