作者harryfly (波特)
看板C_and_CPP
标题[问题] 计算使用者输入数列之平均值
时间Wed Apr 13 14:09:26 2016
开发平台(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? 还是其他地方的错误
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.249.32.186
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1460527770.A.8A0.html
1F:→ Schottky: 这题目其实可以只记数字总和及个数,最後再除就是平均了 04/13 14:23
2F:→ johnjohnlin: 的确是 new 的用法不对 XD 04/13 14:26
3F:→ johnjohnlin: number 每次只在 loop 里面重新 new,外面根本没动到 04/13 14:27
4F:→ Schottky: 两个 for loop 也写得怪怪的 04/13 14:28
5F:→ johnjohnlin: 依照你的写法,你应该会想用 vector,不过一楼才是 04/13 14:28
6F:→ johnjohnlin: 最佳解 04/13 14:29
7F:→ harryfly: 阿 对吼 我一不小心用比较难的写法去写了.......... 04/13 14:32
8F:→ Schottky: 第二个 loop 总共会跑 arraylength+1 次 04/13 14:35
9F:→ MOONRAKER: 写作业不用搞动态 除非题目指定要用 04/13 15:10
10F:→ MOONRAKER: 开个number[2000]就结了 不然开个[65535]绝对用不完 04/13 15:11
11F:推 hakman: new 完的东西,正常来讲你只要拿的到address 不管在哪里 04/14 01:09
12F:→ hakman: 都拿的到。可是你这边new 了很多 阵列(不知道是不是这样说 04/14 01:11
13F:→ hakman: ) 出来,这些都是被浪费的。至於值有没有被放在正确的地方 04/14 01:12
14F:→ hakman: 那又是另外一个问题了 04/14 01:12