template <class T>
class Array
{
protected:
T* p;
int length;
public:
Array(T* p1,int len)
{
length = len;
p = new T[len];
for (int i = 0; i < len; i++)
p[i] = p1[i];
}
~Array()
{
if (p != NULL)
{
delete[]p;
p = NULL;
}
}
T* in()
{
int x = 0;
cout << "要添加的資料個數:" << endl;
cin >> x;
length = length + x;
T* p1 = new T[length];
if (p != NULL)
{
for (int i=0; i < length - x; i++)
p1[i] = p[i];
cout << "請輸入依次要添加的資料:" << endl;
for (int i = 0; i < x; i++)
{
cin >> p[length + i];
}
cout << "添加成功!" << endl;
p = new T[length];
for (int i = 0; i < length; i++)
p[i] = p1[i];
return p;
}
}
T add()
{
T temp = 0;
if (p != NULL)
{
for (int i = 0; i < length; i++)
temp = temp + p[i];
return temp;
}
else {
cout << "陣列中無資料!" << endl;
return 0;
}
}
T average()//問題函式
{
return add()/length;
}
void show()
{
if (p != NULL)
{
for (int i = 0; i < length; i++)
cout << p[i] << ' ';
}
else
{
cout << "陣列中無資料!" << endl;
}
}
};
虛心求教
uj5u.com熱心網友回復:
你的代碼不全,無法判斷uj5u.com熱心網友回復:
剩下部分,其余代碼功能比較重復,就不貼上來了
int main()
{
cout << "請輸入陣列的型別:" << endl;
string t;
cin >> t;
cout << "請輸入資料個數:" << endl;
int length;
cin >> length;
if (t == "int")
{
int* i = new int[length];
cout << "請輸入資料:" << endl;
for (int j = 0; j < length; j++)
cin >> i[j];
int x;
while (true)
{
Array<int> aint(i, length);
cout << "1 添加資料" << endl;
cout << "2 求和" << endl;
cout << "3 求平均值" << endl;
cout << "4 顯示陣列" << endl;
cout << "0 結束程式" << endl;
cout << "請輸入運算元:" << endl;
cin >> x;
switch (x)
{
case 1:
aint.in();
break;
case 2:
cout << "運算結果為:" << aint.add() << endl;
break;
case 3:
cout << "運算結果為:" << aint.average() << endl;
break;
case 4:
aint.show();
break;
case 0:
exit(0);
}
}
delete[]i;
}
}
uj5u.com熱心網友回復:
以上代碼在我這里沒大問題,除了 T* in()這個函式有個分支沒有回傳值外。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/280757.html
標籤:C++ 語言
上一篇:各位大神,幫忙幫忙,救救孩子,編譯提示n does not a name type等錯誤,誰能看看這個要怎么修改才能編譯成功呀,感謝大神。
