Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Задача 3. (Без въвеждане от конзолата)
- 3.1) В един университет се прави малка програма за работа със студенти.
- Всеки студент се описва с име, факултетен номер, година на записване и
- (средно-аритметичен) успех. Изведете информация за:
- всички студенти;
- студенти, които имат успех над 4.50;
- студентите с максимален и минимален успех, записани през 2018 г.;
- средно-аритметично на успехите за студентите с успех над 5.
- */
- #include "stdAfx.h" // при нужда сменете или премахнете този ред, в зависимост от компилатора
- #include <iostream>
- #include <string>
- using namespace std;
- const int MaxStudents = 50;
- // ще работим с 5 студента, без въвеждане
- // глобална дефиниция на структурата, за да е видима от функциите извън main()
- struct Student {
- string Name;
- string FacNo;
- int Year;
- float AvgGrade;
- };
- Student Students[MaxStudents + 1]; // правим и масива Students глобален, MaxStudents+1 елемента, за да работим с 1..MaxStudents
- void EnterAllStudents(Student StudentsArr[])
- {
- StudentsArr[1].Name = "Peter Petrov";
- StudentsArr[1].FacNo = "1901322001";
- StudentsArr[1].Year = 2019;
- StudentsArr[1].AvgGrade = 5.34;
- StudentsArr[2].Name = "Peter Asenov";
- StudentsArr[2].FacNo = "1901322021";
- StudentsArr[2].Year = 2018;
- StudentsArr[2].AvgGrade = 3.55;
- StudentsArr[3].Name = "Angel Angelov";
- StudentsArr[3].FacNo = "1901322031";
- StudentsArr[3].Year = 2017;
- StudentsArr[3].AvgGrade = 4.34;
- StudentsArr[4].Name = "Anna Ivanova";
- StudentsArr[4].FacNo = "1901322002";
- StudentsArr[4].Year = 2018;
- StudentsArr[4].AvgGrade = 4.54;
- StudentsArr[5].Name = "Hasan Ismailov";
- StudentsArr[5].FacNo = "1901322011";
- StudentsArr[5].Year = 2018;
- StudentsArr[5].AvgGrade = 5.14;
- }
- void PrintStudent(Student aStudent, const int id)
- {
- cout << " " << id
- << ": Name: " << aStudent.Name
- << ", FacNo: " << aStudent.FacNo
- << ", Year: " << aStudent.Year
- << ", AvgGrade: " << aStudent.AvgGrade << endl;
- }
- void PrintAllStudents(Student StudentsArr[], const int size)
- {
- for (int i = 1; i <= size; i++)
- PrintStudent(StudentsArr[i], i);
- }
- void PrintStudentsOverGrade(Student StudentsArr[], const int size, float aGrade)
- {
- int num = 0;
- for (int i = 1; i <= size; i++)
- if (StudentsArr[i].AvgGrade > aGrade)
- PrintStudent(StudentsArr[i], ++num);
- }
- void PrintStudentsMinMaxFromYear(Student StudentsArr[], const int size, int aYear)
- {
- int minId = 0;
- int maxId = 0;
- for (int i = 1; i <= size; i++)
- // филтруваме само от годината
- if (StudentsArr[i].Year == aYear)
- {
- // първият намерен от годината е мин/макс
- if (minId == 0) minId = i;
- if (maxId == 0) maxId = i;
- // проверяваме за мин/макс
- if (StudentsArr[i].AvgGrade < StudentsArr[minId].AvgGrade)
- minId = i;
- if (StudentsArr[i].AvgGrade > StudentsArr[maxId].AvgGrade)
- maxId = i;
- }
- int num = 0;
- cout << " with a minimum grade: " << endl;
- for (int i = 1; i <= size; i++)
- if (StudentsArr[i].AvgGrade == StudentsArr[minId].AvgGrade)
- PrintStudent(StudentsArr[i], ++num);
- num = 0;
- cout << " with a maximum grade: " << endl;
- for (int i = 1; i <= size; i++)
- if (StudentsArr[i].AvgGrade == StudentsArr[maxId].AvgGrade)
- PrintStudent(StudentsArr[i], ++num);
- }
- float PrintAverageGradeOver(Student StudentsArr[], const int size, float aGrade)
- {
- float sum = 0.0;
- int num = 0;
- for (int i = 1; i <= size; i++)
- if (StudentsArr[i].AvgGrade > aGrade)
- {
- num++;
- sum += StudentsArr[i].AvgGrade;
- }
- if (num == 0) return 0;
- else return sum / num;
- }
- int main()
- {
- int numSudents = 5;
- EnterAllStudents(Students);
- cout << "1. Information for all students:" << endl;
- PrintAllStudents(Students, numSudents);
- cout << "2. All students with grade over 4.50:" << endl;
- PrintStudentsOverGrade(Students, numSudents, 4.50);
- cout << "3. All students with min/max grade from 2018:" << endl;
- PrintStudentsMinMaxFromYear(Students, numSudents, 2018);
- cout << "4. Average grade of students with grades over 5.00: " <<
- PrintAverageGradeOver(Students, numSudents, 5.00) << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment