TransWikia.com

Максимальное значение в массиве си

Stack Overflow на русском Asked by gr_new on January 6, 2021

В общем, задача очень была очень простой. Нужно было просто найти минимальный элемент массива, но сделать это через доп.функцию с её последующим вызовом.

#include <stdio.h>

int max_number(int arr[])
{
    int max;
    for (int i=0; i<5; i++)
    {
    if (arr[i]>arr[0])
    max=arr[i];
    }
return max;
}


int main()
{
    int arr[5];
    int max;
    int i;
    for (i=0; i<5; i++)
    {
    scanf("%d", &arr[i]);
    if (arr[i]<0)
    arr[i]*=-1;
    }
    
    max_number(arr);
    printf ("%d", max);
    return 0;
}

Как я понял, вызов функции он вообще не видит и выводит в консоль 21845. В этом всём сильно путаюсь, буду благодарен ответам.

2 Answers

Во-первых, в условии вы ясно написали:

Нужно было просто найти минимальный элемент массива, но сделать это через доп.функцию с её последующим вызовом.

Вы же ищете максимальный. Далее, вы не передаете размер массива в функцию, не инициализируете переменные.

Вот правильное решение:

#include <stdio.h>

int min_number(int* arr, unsigned int size) {
    int min = arr[0];

    for (unsigned int i = 1; i < size; i++)
        if (arr[i] < min) min = arr[i];

    return min;
    }


int main() {
    int arr[5];

    for (int i = 0; i < 5; i++) {
        scanf("%d", &arr[i]);

        if (arr[i] < 0)
            arr[i] *= -1;
        }

    printf("%d", min_number(arr, 5));
    }

Ваше изменение знака

if (arr[i] < 0) arr[i] *= -1;

оставляю на вашей совести - об этом в условии ничего не говорится.

Correct answer by Mikhailo on January 6, 2021

место:

if (arr[i]>arr[0])
    max=arr[i];

надо:

if (arr[i] > max)
    max = arr[i];

место:

max_number(arr);

надо:

max = max_numder(arr);

Answered by Danis on January 6, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP