求救
//請注意:只能在原句上修改,而不能增加或洗掉陳述句。本題一共含有6個錯誤。#include <iostream>
#include <string>
using namespace std;
class StudentArray;
class Student{ string name; //姓名 int age; //年齡 double score; //分數public: void input(); friend class StudentArray; //將StudentArray宣告為友元類,方便操作};void Student::input(){ cout << "請輸入學生姓名:"; cin >> name; cout << "請輸入學生年齡:"; cin >> age; cout << "請輸入學生成績:"; cin >> score;}class StudentArray{ Student *p; //動態陣列的指標 int len; //陣列的長度 int last; //陣列最后一個元素的下標public: StudentArray(int length = 0); ~StudentArray(); StudentArray(StudentArray &arr); StudentArray& operator=(StudentArray &arr); void add(Student &s); //增加物件s到該陣列中 double getaverage(); //求出所有學生成績的平均值 };StudentArray::StudentArray(int length = 0){ len = length; last = -1; if(len > 0) p = new Student[len]; else p = NULL;}StudentArray::~StudentArray(){ delete p[];}StudentArray::StudentArray(StudentArray &arr){ len = arr.len; last = -1; p = new Student[len]; for(int i = 0 ; i <= last ; i++) p[i] = arr.p[i];}StudentArray& StudentArray::operator=(StudentArray &arr){ delete []p; len = arr.len; last = arr.last; p = new Student[len]; for(int i = 0 ; i <= last ; i++) p[i] = arr.p[i]; return this;}void StudentArray::add(Student &s){ if(last == len) return; //已滿則放棄增加 last++; p[last] = s;}double StudentArray::getaverage(){ if(last == -1) return 0; double sum = 0; for(int i = 0 ; i <= last ; i++) sum += p[i].score; return sum / last;}int main(){ StudentArray s1(3) , s2; Student temp; int i; for(i = 0 ; i < 3 ; i++) { temp.input(); s1.add(temp); cout << endl; } s2 = s1; //這里故意測驗了=號的使用 cout << "三個人的均分是:" << s2.getaverage() << endl; return 0;}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/284627.html
標籤:新技術前沿
下一篇:求時段分配的負責人