Известны оценки каждого из 15 студентов, полученные в сессию на экзаменах по трем предметам. Организовать ввод информации по таблице и определить:
а) количество студентов, сдавших сессию без троек и двоек;
б) количество предметов, по которым были получены только оценки "5" и "4";
в) количество пятерок по каждому предмету.

#include <iostream>
#include <iomanip>
using namespace std;
struct student{int8_t val[3]{};};
void print(student* arr,size_t begin, size_t end)
{
cout << "Student: 1 2 3\n";
cout << "==================================\n";
for (size_t it = begin; it <= end; it++)
{
cout << setw(3) << it+1;
for (size_t i = 0; i < 3; i++) cout << setw(10) << (int)arr[it].val[i];
cout << endl;
}
}
int numgood(student* arr, size_t size)
{
int count = 0;
bool chk;
for (size_t i = 0; i < size; i++) {
chk = true;
for (size_t j = 0; j < 3; j++) arr[i].val[j] < 4 ? chk = false : NULL;
chk?count++:NULL;
}
return count;
}
int numgoodprdm(student* arr, size_t size)
{
int count = 0;
bool chk;
for (size_t i = 0; i < 3; i++) {
chk = true;
for (size_t j = 0; j < size; j++) if (arr[j].val[i] < 4) {
chk = false; break;
}
count += chk;
}
return count;
}
int num5(int8_t* tabs, size_t size)
{
int count = 0;
for (size_t i = 0; i < size * 3; i++) tabs[i] == 5 ? count++ : NULL;
return count;
}
int main()
{
srand(time(NULL));
student table[15];
int8_t* tab = &table[0].val[0];
for (size_t i = 0; i < 45; i++) tab[i] = rand() % 4 + 2;
print(table, 0, 14);
cout << endl;
cout << "Num of best: " << numgood(table, 15) << endl;
cout << "Num of good prdm: " << numgoodprdm(table, 15) << endl;
cout << "Num of fives: " << num5(tab, 15);
}