1#include <iostream>
2#include <string>
3#include <array>
4#include <iomanip>
5#include <numeric>
6
7struct StudentRecord {
8 std::string name;
9 std::string rollNumber;
10 std::array<double, 5> marks;
11};
12
13char calculateGrade(double percentage) {
14 if (percentage >= 90.0) return 'A';
15 if (percentage >= 80.0) return 'B';
16 if (percentage >= 70.0) return 'C';
17 if (percentage >= 50.0) return 'D';
18 return 'F';
19}
20
21int main() {
22 constexpr std::array<const char*, 5> subjectNames = {
23 "C++ Core", "Data Structures", "Computer Org", "DBMS", "Discrete Math"
24 };
25
26 StudentRecord student;
27 std::cout << "=== MSK Institute Student Grade Entry ===\n";
28 std::cout << "Enter Student Full Name: ";
29 std::getline(std::cin, student.name);
30
31 std::cout << "Enter Roll Number: ";
32 std::getline(std::cin, student.rollNumber);
33
34 for (std::size_t i = 0; i < student.marks.size(); ++i) {
35 std::cout << "Enter marks for " << subjectNames[i] << " (0-100): ";
36 std::cin >> student.marks[i];
37 }
38
39 // Aggregations
40 double totalMarks = std::accumulate(student.marks.begin(), student.marks.end(), 0.0);
41 double percentage = totalMarks / student.marks.size();
42 double gpa = percentage / 10.0;
43 char grade = calculateGrade(percentage);
44
45 // Formatted Grade Card
46 std::cout << "\n==================================================\n";
47 std::cout << " MSK INSTITUTE OF TECHNOLOGY \n";
48 std::cout << " OFFICIAL GRADE CARD \n";
49 std::cout << "==================================================\n";
50 std::cout << "Student Name : " << student.name << "\n";
51 std::cout << "Roll Number : " << student.rollNumber << "\n";
52 std::cout << "--------------------------------------------------\n";
53 std::cout << std::left << std::setw(25) << "Subject"
54 << std::right << std::setw(15) << "Marks Obtained\n";
55 std::cout << "--------------------------------------------------\n";
56
57 for (std::size_t i = 0; i < student.marks.size(); ++i) {
58 std::cout << std::left << std::setw(25) << subjectNames[i]
59 << std::right << std::setw(15) << std::fixed << std::setprecision(1) << student.marks[i] << "\n";
60 }
61
62 std::cout << "==================================================\n";
63 std::cout << "Total Marks : " << totalMarks << " / 500.0\n";
64 std::cout << "Percentage : " << percentage << "%\n";
65 std::cout << "GPA (10-pt) : " << gpa << " / 10.0\n";
66 std::cout << "Final Grade : " << grade << " (" << (grade != 'F' ? "PASSED" : "FAILED") << ")\n";
67 std::cout << "==================================================\n";
68
69 return 0;
70}