我想知道是否有人能幫我解決一整天都在苦苦掙扎的事情。從隨機數組中輸出最大最小值和平均值?
在下面的代碼中,我規定了一個隨機數字的數組,我必須從中提取最大最小值和平均值。這一切都看起來不錯,很好(這樣一個緊湊的軟件!)但我得到了一個奇怪的輸出。我相信我有一個問題是什麼問題(比如我找到第一個數字的最大值,但下一個數字越小,軟件會認爲這是最大的數字,即使整數14可能更大),但我不知道如何去解決這個問題。最小值我不知道爲什麼它是錯誤的,它一直說它是零,平均值保持在10-19的任何地方,考慮到隨機數的範圍從1到1000,這是不可能的。我從來沒有被教過如何組織隨機數一個數組,所以我只是不知道如何去解決這個問題。任何幫助將超級棒!我真的很苦惱這個程序,甚至多次報廢,如果這只是一個簡單的錯誤,我忽略了我會感到非常尷尬,我會發布代碼和下面的示例輸出。
感謝您抽出時間,希望您有美好的一天!
#include <cmath>
#include <iostream>
#include<cstdlib>
#include <ctime>
#include <time.h>
#include <iomanip>
using namespace std;
int main()
{
//Defining variables
//DEFINE SIZE
const int ARRAY_SIZE =20;
//Index variable
int i;
//For finding average
double sum=0;
double max_value;
double min_value;
//Keep all numbers sane
cout.precision(5);
srand((unsigned)time(0));
double main_array[ARRAY_SIZE];
//Header
cout << "Element number \t\t" << "Random Number\n\n" << endl;
//Assigning random values into array.
for (i=0; i< ARRAY_SIZE; i++)
{
max_value=0;
min_value=0;
//Randomizer
double ran = 0 + (rand()/((float)RAND_MAX/(1000-0)));
main_array[i] = ran;
cout << "\t" << i << "\t\t" << main_array[i] << endl;
//Find average
sum= (sum + main_array[i]);
sum= sum/(ARRAY_SIZE+1);
//Initalizing
for (int i = 0; i < ARRAY_SIZE; i++)
{
if (min_value > ran)
min_value = main_array[i];
if (max_value < ran)
max_value = main_array[i];
}
}
cout <<"Average Value is: " << sum << endl;
cout <<"\nThe Minimum Value Is: " << min_value << endl;
cout <<"\nThe Maximum value Is: " << max_value << endl;
system ("pause");
return 0;
}
輸出例子是
元數隨機數
0 791.62
1 542.04
2 879.57
3 875.39
4 38.057
5 73.702
6 973.27
7 22.431
8 830.26
9 444.59
10 276.89
11 888.12
12 827.17
13 900.45
14 883.72
15 201.15
16 317.64
17 649.83
18 443.98
19 683
Average Value is: 33.603
The Minimum Value Is: 0
The Maximum value Is: 791.62
Press any key to continue . . .
你可以使用算法庫嗎? – OGH 2013-04-09 21:57:04