Как отобразить индекс в массиве с функцией - PullRequest
0 голосов
/ 22 апреля 2019

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

#define COLOR_SIZE 50
#define PLANT_ARRAY_SIZE 3

struct Plant
{
    int plantID;
    double price;
    char color[COLOR_SIZE];
};

int main()
{
int index;

//create array
struct Plant totalPlants[PLANT_ARRAY_SIZE];

//initialize array
for (int count = 0; count < PLANT_ARRAY_SIZE; count++)
    {
        initializePlant(totalPlants);
    }

// find lowest
index = findCheapestPlant(totalPlants, PLANT_ARRAY_SIZE);

//display lowest cost plant     
displayPlant(totalPlants[index]);

return 0;
}

void initializePlant(struct Plant *x)
{
    printf("\nEnter the information for the next plant\n");

    printf("Enter plant ID as an integer>");

    scanf("%d", &(x->plantID));
    printf("Enter the plant price as a double>");

    scanf("%lf", &(x->price));

    printf("Enter the perdominant color of the plant>");

    scanf("%s", &(x->color));

void displayPlant(struct Plant *x)
{

    printf("\nThe cheapest plant is to be...\n");
    printf("Plant ID %d which costs $%.2lf and the color is %s\n", x->plantID, x->price, x->color);
}

int findCheapestPlant(struct Plant x[], int length)
{
    double lowest;
    int index = -1;
    int i = 0;

    if (length > 0)
    {
        lowest = x[i].price;
    }

    for (i = 0; i < length; i++)
    {
        if (x[i].price < lowest)
        {
            index = i;
            lowest = x[i].price;
        }



    }

    return index;
}

}

Я ожидаю, что функция дисплея выдаст самую низкую цену, но я получаю ошибки.

1 Ответ

0 голосов
/ 22 апреля 2019

В комментариях упоминается несколько ошибок, в дополнение к исправлению этих ошибок, следующее должно помочь вам достичь того, что вы хотите сделать.

Чтобы получить код для отображения индекса, возможно, изменитеобъявление displayPlant, чтобы также взять индекс:

displayPlant(struct Plant *x, int index)

, а затем передать индекс, который у вас есть в main, функции, такой как

displayPlant(totalPlants[index], index);

Тогда, конечно, вы должны изменить свое выражение printf на что-то вроде:

printf("Plant ID %d (index: %d) which costs $%.2lf and the color is %s\n", x->plantID, index, x->price, x->color);

РЕДАКТИРОВАТЬ: я также должен сказать, что инициализация вашего индекса в-1 - плохая идея, потому что она приведет к ошибкам сегмента, если ваш код не содержит проверки на наличие индекса> = 0.

Дополнительно добавьте это index = i; или index = 0 здесь, в вашемкод:

if (length > 0)
{
    lowest = x[i].price;
    index = i; //here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...