[問題] 計算使用者輸入數列之平均值

作者: harryfly (波特)   2016-04-13 14:09:26
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
是這樣的 小弟有個功課是要寫一個讓使用者輸入一個數列
以9999為停止數字 程式將會計算9999之前的數字的平均值
餵入的資料(Input):
10
20
9999
預期的正確結果(Expected Output):
15
錯誤結果(Wrong Output):
-2.94091e+08
程式碼(Code):
// ConsoleApplication3.cpp : 定義主控台應用程式的進入點。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int *number = new int[1];
int arraylength = 0;
int warning_value;
double result = 0;
int main()
{
cout << "請輸入欲計算平均值之數字:";
for (int i = 0; warning_value != 9999; i++ )
{
int *number = new int[i];
cin >> *(number+i);
arraylength = i + 1; //紀錄目前陣列長度
warning_value = number[i];
}
for (int i = 0; i <= arraylength; i++)
if (i != arraylength)
result += number[i];
else
{
result += number[i];
result = result / arraylength;
}
delete[]number;
cout << "計算平均值之結果為:" << result << endl;
system("pause");
}
補充說明(Supplement):
找了很久實在是找不到bug點在哪裡.....
才來po文求助
new 是我翻google找到的 不知道這樣用對不對...
會不會是錯在new? 還是其他地方的錯誤
作者: Schottky (順風相送)   2016-04-13 14:23:00
這題目其實可以只記數字總和及個數,最後再除就是平均了
作者: johnjohnlin (嗯?)   2016-04-13 14:26:00
的確是 new 的用法不對 XDnumber 每次只在 loop 裡面重新 new,外面根本沒動到
作者: Schottky (順風相送)   2016-04-13 14:28:00
兩個 for loop 也寫得怪怪的
作者: johnjohnlin (嗯?)   2016-04-13 14:28:00
依照你的寫法,你應該會想用 vector,不過一樓才是最佳解
作者: harryfly (波特)   2016-04-13 14:32:00
阿 對吼 我一不小心用比較難的寫法去寫了..........
作者: Schottky (順風相送)   2016-04-13 14:35:00
第二個 loop 總共會跑 arraylength+1 次
作者: MOONRAKER (㊣牛鶴鰻毛人)   2016-04-13 15:10:00
寫作業不用搞動態 除非題目指定要用開個number[2000]就結了 不然開個[65535]絕對用不完
作者: hakman (^____^)   2016-04-14 01:09:00
new 完的東西,正常來講你只要拿的到address 不管在哪裡都拿的到。可是你這邊new 了很多 陣列(不知道是不是這樣說) 出來,這些都是被浪費的。至於值有沒有被放在正確的地方那又是另外一個問題了

Links booklink

Contact Us: admin [ a t ] ucptt.com