C - функция, которая подсчитывает количество вхождений элемента в рандомизированном массиве

Я новичок в программировании в целом и в настоящее время программирую на C, и в настоящее время я работаю над программой, которая сначала рандомизирует 10 чисел, которые помещаются в массив, и распечатывает их на экране, а затем позволяет пользователю вводить целое число, и программа должна затем проверить массив и распечатать, сколько раз введенное пользователем целое число встречается в массиве, и именно здесь у меня возникают проблемы.

#include <stdio.h>
#include <stdlib.h> 
#include <time.h>

//  Function to initialize random numbers.
int Random()                                                            
{
    srand(time(NULL));                                                  //  To initialize the random number generator.
    return 0;                                                           //  Really only the important part from the function, that it returns something.
}

// Generates randome values for the array.
void setRandomNumber(int inputArray[], int arraySize)                   
{
    int i;
    Random();                                                           //  Calls the "Random" function. 
    for(i = 0; i < arraySize; i++)                                      //  Conditions for when/how many times to run the loop.
        inputArray[i] = (rand() % 10) + 1;                              //  What values the array will get, random numbers between 1 and 10.
}

// Function to count the occurrances of an element.
int countElement(int inputArray[], int arraySize, int elementCount)
{

}

int main(void)
{
    int numbers[10];                                                    
    int loop;
    int run = 1;
    int elementCount = 1;
    setRandomNumber(numbers, 10);                                       //  Calls the "setRandomNumber" fucntion to set random values to the floats in the array. 
    countElement(numbers, 10, elementCount);

    for (loop = 0; loop < 10; loop++)                                   //  Prints out the already randomized values of the array "numbers"
        printf("Number: %d\n", numbers[loop]);

    printf("\nWhat to search for: ");
    scanf_s("%d", &elementCount);                                       //  Takes user input on what number to check.
    printf("The number %d occurs %d times.\n", elementCount, countElement);

    return 0;


}

Мы обязаны использовать функции, и заголовок функции должен выглядеть так int countElement(int inputArray[], int arraySize, int elementCount), и в данном случае это countElement функция, с которой у меня проблемы.


person ConfusedChicken4    schedule 04.12.2019    source источник
comment
В чем проблема? Вы пытались написать функцию countElement?   -  person Spikatrix    schedule 04.12.2019
comment
Одна из основных проблем, с которой вы столкнулись, находится в строке printf("The number %d occurs %d times.\n", elementCount, countElement); - где последний аргумент, как он у вас есть, будет адресом функции countElement. Чтобы получить возвращаемое значение функции, вам необходимо указать функцию с аргументами, например: countElement(numbers, 10, elementCount).   -  person Adrian Mole    schedule 04.12.2019


Ответы (1)


Это просто

int countElement(int inputArray[], int arraySize, int elementCount)
{
    int count = 0l

    for ( int i = 0; i < arraySize; i++ )
    {
        if ( inputArray[i] == elementCount ) ++count; 
    }

    return count;
}

Функцию можно назвать так:

printf("The number %d occurs %d times.\n", elementCount, 
                                           countElement( numbers, 10, elementCount ) );

Хотя правильнее было бы объявить функцию как

 size_t countElement( const int inputArray[], size_t arraySize, int elementCount );
person Vlad from Moscow    schedule 04.12.2019
comment
Код запускается, когда я добавляю то, что вы сказали в функцию countElement, и меняю printf. Но теперь каждый раз, когда я ввожу значение, он просто возвращает, что это число встречается 10 раз, хотя это не так. Какие-либо предложения? Кстати, спасибо за первую часть. - person ConfusedChicken4; 04.12.2019
comment
@ ConfusedChicken4 Проверить, есть ли в этом операторе if (inputArray [i] == elementCount) ++ count; вы используете оператор присваивания вместо оператора сравнения, как в исходной инструкции. - person Vlad from Moscow; 04.12.2019
comment
Что ты имеешь в виду? (начал программировать 3 недели назад и узнал о функциях сегодня) вот как это выглядит в моем коде if (inputArray [i] == elementCount) - person ConfusedChicken4; 04.12.2019
comment
Nvm обнаружила проблему. У меня не было подсчета возвратов; в конце функции. Спасибо за помощь - person ConfusedChicken4; 04.12.2019