我需要創建一個程式來收集用戶輸入,直到用戶按下 0 或輸入 10 個值。然后我需要創建一個函式,而不使用內置來獲取最小值和最大值。但是,當輸入 9 個或更少的值時,最小值和最大值函式回傳一個隨機值。這是我的代碼:
#include <iostream>
using namespace std;
int getMin(int array[], int n);
int getMax(int array[], int n);
int main()
{
int array[10];
cout << "This program will ask the user to input various numbers (positive or negative but not zero) and perform basic statistics on these numbers.\n";
for(int i=0; i<10; i ){
cout<<"\nInput an integer: ";
cin>>array[i];
if(array[i]==0) {
break;
}
}
int n = sizeof(array) / sizeof(array[0]);
cout << "Minimum element of array: " << getMin(array,n) << "\n";
cout << "Maximum element of array: " << getMax(array,n);
return 0;
}
int getMin(int array[], int n)
{
int minimum = array[0];
for (int i = 1; i < n; i )
if (minimum > array[i]) {
minimum=array[I];
}
return minimum;
}
int getMax(int array[], int n)
{
int maximum = array[0];
for (int i = 1; i < n; i )
if (maximum < array[i]) {
maximum=array[I];
}
return maximum;
}
即使我輸入的值少于 10 個,我該如何做到這一點,它會回傳正確的最小值和最大值?
uj5u.com熱心網友回復:
沒有不完整的陣列。當您宣告這樣的陣列時:
int array[10];
不管你喜不喜歡,它都10 int在里面,永遠永遠。
你只是不知道它們是什么。最有可能的是,它們基本上是無意義的數字,來自系統的一些指標值轉換為ints。如果你運氣不好,你會得到零。那是不走運,不走運,因為你不會發現問題,下周當老師給它評分時,他們可能不再是零了。
您的回圈在讀取 0 后停止。如果我輸入 5 個數字 1、2、3、4、5,則陣列中充滿
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
array[5] = 0
array[6] = 2130374633
array[7] = -1845723111
array[8] = 346214765
array[9] = -678554534
例如。
然后,當您的代碼查找最小值時,它會找到 -1845723111,最大值為 2130374633。
簡單的解決方案是只查看前 5 個數字。而不是int n = sizeof(array) / sizeof(array[0]);(計算 10,陣列中的整數個數),您應該將 n 設定為用戶輸入的數字數。我不會為您撰寫該代碼,因為它會做您的功課,但是這應該不是很難。
uj5u.com熱心網友回復:
如果需要,您將在少于 10 個值上打破回圈,但仍會遍歷整個陣列。相反,您應該只迭代那些實際已寫入的值,讀取其他值會導致未定義的行為,因為陣列未在這些位置初始化(因此包含您看到的“亂碼”......)。
所以:
size_t n;
for(n = 0; n < sizeof(array)/sizeof(*array); n)
{
// use n instead of i
}
getMin(array, n);
getMax(array, n);
uj5u.com熱心網友回復:
當用戶輸入 0 時,您沒有存盤該值,并且您停止讀取任何其他值
if(array[i]==0) {
break;
}
所以,在你的 getMin 和 getMax 函式中,你應該更新到這個
for (int i = 1; i < n; i ){
if(array[i] == 0)
break;
// your code to get min or max goes here
}
請注意,對于這種方法,您的陣列不能為空(不能將第一個元素歸零)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/466272.html
