Я хотел бы передать массив из моего основного метода в мою функцию (мин), чтобы можно было вычислить минимум в функции (мин) - PullRequest
0 голосов
/ 12 ноября 2018
#include <stdio.h>

int min(int pArray[], int nrOfArrayElements)
{
    min = pArray[0];
    for (int i = 1; i < nrOfArrayElements; i++)
    {
        if (pArray[i] < min)
        {
            min = pArray[i];
        }
    }
    return min;
}

int main()
{
    int x[10] = { 2,3,4,5,1,6,9,8,7,0 };
    int sizeOfArray, sizeOfElement, nrOfArrayElements;

    sizeOfArray = sizeOf(x);
    sizeOfElement = sizeOf(x[0]);
    nrOfArrayElements = sizeOfArray / sizeOfElement;
    int min = min(x[10],nrOfArrayElements);
    printf("smallest Array = %d", min);
    return 0;
}

Следующие ошибки появляются при попытке передать мой массив из main в мою функцию. Я не совсем уверен, почему pArray [0] классифицируется как указатель, когда я просто пытаюсь получить элемент в этой позиции.

main.c: 13: 9: ошибка: в качестве левого операнда присваивания требуется lvalue min = pArray [0];

main.c: 19: 8: ошибка: в качестве левого операнда присваивания требуется lvalue min = pArray [i];

main.c: 32: 16: ошибка: вызываемый объект «min» не является функцией или указателем на функцию int min = min (x [10], nrOfArrayElements);

1 Ответ

0 голосов
/ 12 ноября 2018

У вас 3 проблемы.

  1. Вы вызываете функцию sizeOf, в то время как фактическое имя sizeof. (Обратите внимание на заглавные буквы)

  2. Вы используете целое число min, а также функцию min. Оба идентификатора не могут иметь одинаковое имя. Я изменил целое число на min2.

  3. При вызове функции min вы вызываете ее с помощью min(x[10],nrOfArrayElements). Поскольку первый параметр является массивом типа int, вам необходимо передать базовый адрес массива, т.е. min(x,nrOfArrayElements)

Финальный код ниже.

int min(int pArray[], int nrOfArrayElements)
{
    int min2;
    min2 = pArray[0];
    for (int i = 1; i < nrOfArrayElements; i++)
    {
        if (pArray[i] < min2)
        {
            min2 = pArray[i];
        }
    }
    return min2;
}

int main()
{
    int x[10] = { 2,3,4,5,1,6,9,8,7,0 };
    int sizeOfArray, sizeOfElement, nrOfArrayElements;
    sizeOfArray = sizeof(x);
    sizeOfElement = sizeof(x[0]);
    nrOfArrayElements = sizeOfArray / sizeOfElement;
    int min2 = min(x,nrOfArrayElements);
    printf("smallest Array = %d", min2);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...