Найти минимальный элемент массива Си
Нужно найти минимальный элемент в массива и вывести его. Начал изучать Си и что не получается. Ошибся, но где?
#include <stdio.h>
#include <windows.h>
int findMin(int *arr)
{
int count = sizeof(arr) / sizeof(int);
int min = INT_MAX;
for(int i = 0; i < count; i++)
{
if (arr[i] < min)
{
min = arr[i];
}
}
return min;
}
int main(void)
{
SetConsoleCP(CP_UTF8);
SetConsoleOutputCP(CP_UTF8);
int arr[] = {1,2,3,4,5,6,7,8,9,0,-1,-5};
printf("Наименьшее число массива :%i", findMin(arr));
return 0;
}
Ответы (1 шт):
Автор решения: citn
→ Ссылка
Когда вы передаете массив в функцию, то он не сохраняет информацию о его размере, и sizeof(arr) вернет просто размер указателя, а не размер самого массива.
int findMin(int *arr, int size)
{
int min = INT_MAX;
for(int i = 0; i < size; i++)
{
if (arr[i] < min)
{
min = arr[i];
}
}
return min;
}
int main(void)
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -1, -5};
int size = sizeof(arr) / sizeof(arr[0]);
...
}