Я хочу найти самые большие и самые низкие числа в массиве с помощью функции. Вот мой код:Поиск наибольшего числа в массиве возвращает значение max int
#include <stdio.h>
void findLowHigh(int* numbers, int size, int* min, int* max) {
for(int i = 0; i < size; i++) {
if (*min > numbers[i]) *min = numbers[i];
else if (*max < numbers[i]) *max = numbers[i];
}
}
int main() {
printf("##### Find lowest and highest number in collection #####");
printf("\n Array checked: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]");
int min, max;
int numbers1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
findLowHigh(numbers1, 10, &min, &max);
printf("\nMin: %d\nMax: %d", min, max);
printf("\n Array checked: [ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]");
int numbers2[10] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
findLowHigh(numbers2, 10, &min, &max);
printf("\nMin: %d\nMax: %d", min, max);
return 0;
}
И есть выход:
##### Find lowest and highest number in collection #####
Array checked: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
Min: 1
Max: 32767
Array checked: [ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]
Min: 1
Max: 32767
Process finished with exit code 0
Я предполагаю, что есть что-то не так с указателями, но что это?
Похоже, вам, возможно, потребуется узнать, как использовать отладчик для перехода по вашему коду. С хорошим отладчиком вы можете выполнить свою программу по очереди и посмотреть, где она отклоняется от ожидаемого. Это важный инструмент, если вы собираетесь заниматься программированием. Дальнейшее чтение: ** [Как отлаживать небольшие программы] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver
Ваши переменные не инициализируются, поэтому они устанавливаются к некоторому унифицированному значению, которое в вашем случае равно 32767, поэтому никогда не бывает так, что max меньше любого из ваших значений в вашем массиве. Вы должны инициализировать оба значения до разумного значения, например '0' или что угодно: – EdChum
, где вы инициализируете низкий и высокий? – RyanP