Я пытаюсь написать функцию, которая будет возвращать наименьшее значение массива. Пока у меня есть это, но все это возвращает 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];
Я бы сделал что-то вроде этого:
#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];
}
Оба примера должны работать нормально, но я рекомендую использовать в первую очередь.
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;
}