C/C++

Программирование, пожалуйста помогите очень нужно решить

1.
#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
using namespace std;
class Pupil {
public:
Pupil() : m(0), r(0), p(0) {}
Pupil(const string& n, short m, short r, short p) : m(m), r(r), p(p), n(n) {}
int sum()const { return m + r + p; }
double average()const { return sum() / 3.0; }
private:
short m, r, p;
string n;
friend ostream& operator<<(ostream& out, const Pupil& p) {
return out << p.n << ", ср. балл: " << p.average();
}
};
template<typename Type>
Type number(const char* msg) {
cout << msg;
Type value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
Pupil pupil() {
cout << "Ф. И. О.: ";
string name;
getline(cin, name);
auto m = number<short>("Математика: ");
auto r = number<short>("Русский язык: ");
auto p = number<short>("Физика: ");
Pupil pupil(name, m, r, p);
return pupil;
}
int main() {
system("chcp 1251 > nul");
auto n = number<size_t>("Количество учеников: ");
vector<Pupil> sheet(n);
for (auto& record : sheet) record = pupil();
puts("");
auto sum = 0.0;
for (const auto& record : sheet) sum += record.average();
auto avg = sum / n;
cout.setf(ios::fixed);
cout.precision(2);
cout << "Срединий балл класса: " << avg << '\n';
auto id = 0U;
for (const auto& record : sheet) {
if (record.average() > avg) {
cout << ++id << ". " << record << '\n';
}
}
cout.precision(8);
cout.unsetf(ios::fixed);
system("pause > nul");
}

2.
a) абсолютно недопустим, функция calc ожидает всего один параметр, а ей передано два
b) допустим
с) допустим
d) условно допустим, т. к. второй параметр будет усечён до типа int с потерей точности
Bereket '
Bereket '
80 256
Лучший ответ