[英]smallest value of array
我正在嘗試編寫一個函數,該函數將返回數組的最小值。 到目前為止,我有這個,但是它返回的都是0。
我看不到它將如何返回0,因為我正在使用for循環在數組中循環。 也許不是像我認為的那樣循環遍歷數組值。 誰能詳細說明這段代碼的邏輯和謬誤?
#include <iostream>
using namespace std;
int newArray[9] = {4,5,9,3,6,2,1,7,8};
int minArray()
{
int index = 1;
int minimum;
for (int i = 0; i < 9; i++)
{
if (newArray[i] > newArray[index])
{
minimum = newArray[index];
}
index++;
}
return minimum;
}
int main()
{
cout << "original array:\n ";
for (int i = 0; i < 9; i++)
{
cout << newArray[i] << ", ";
}
cout << "minimum value of array: ";
cout << minArray();
return 0;
}
一個好主意可能是使用數組中的元素初始化最小值。 所以:
minimum = newArray[0]
在循環中(假設您不想要答案的偽代碼):
if: newArray[pos] < minimum
minimum = newArray[pos];
minimum
變量應首先分配給數組中的一個值,然后將數組中的每個元素與minimum
進行比較。 如果小於,則為該值分配minimum
:
int minArray()
{
int minimum = newArray[0];
int index = 0;
for (int i = 0; i < 9; i++)
{
if (newArray[i] < minimum)
{
minimum = newArray[i];
}
index++;
}
return minimum;
}
我會做這樣的事情:
#include <iostream>
int minArray(int a[], int size) {
if (size <= 0) return 0; //
int m = a[0];
for (int i = 1; i < size; ++i) {
if (a[i] < m) m = a[i];
}
return m;
}
int main() {
int a[] = { 4, 3, 6, 2 };
std::cout << minArray(a, 4);
return 0;
}
您應該使用某個已知值或最大整數值來初始化minimum
。
int minArray()
{
int minimum = newArray[0];
for (int i = 1; i < 9; i++)
{
if (minimum > newArray[i])
{
minimum = newArray[i];
}
}
return minimum;
}
而且您在處理index
(實際上根本不需要它)。 如何使用index
而不是minimum
示例:
int minArray()
{
int index = 0;
for (int i = 1; i < 9; i++)
{
if (newArray[index] > newArray[i])
{
index = i;
}
}
return newArray[index];
}
這兩個示例都可以正常工作,但我建議先使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.