Соответствующие элементы в массивах - PullRequest
0 голосов
/ 06 апреля 2020

Итак, в основном моя проблема в том, что у меня есть отсортированный массив целых и массив структур, называемых product.

Структура:

typedef struct product 
{
   int ident;/*idp of a product*/
   char desc[64]; /* string that describes a product eg. "bread" */
   int price;  /* price of the product*/
   int weight; /* weight of the product eg. 2kg */
   int quant; /* quantity of the product in stock */
   int state_prod;/*state of a product, if its 1 its in the system else is 0 and is not in the system*/
}product;

массивы:

product p1 = {0,"pao",2,2,200,1};
product p2 = {1,"ovos",1,1,100,1};
product p3 = {2,"iscas",3,3,300,1};
product p4 = {3,"bacon",2,5,400,1};
product p5 = {4,"abacate",2,6,500,1};

product system[5] = {p1,p2,p3,p4,p5};

int price[5] = {1,2,2,2,3};

То, что я хочу, это создать массив товаров, в каждом из которых цена товара соответствует int в массиве цен, и если цена одинакова, я хочу, чтобы она соответствовала идентификатору.

, например:

int price_og[5] = {2,1,3,2,2};

product system[5] = {p1,p2,p3,p4,p5};

//after sorting the pirce_og array i get

int new_price[5] = {1,2,2,2,3}

// What i want as a result is this

product new_system[5] = {p2,p1,p5,p4,p3};

//new_system is the array of products that match the prices of new_price

Проблема в том, что эта функция использует эту вероятную простую ошибку, и я не могу понять, что это за функция

:

void align_prod(product a[],int b[],product c[]){
int i = 0;
while (i<5)
{
    if ((a[i].price == b[i]) && (a[i].ident == i))
    {
        c[i] = a[i];
        i++;
    }
    else
    {
        i++;
    }
}
}

Серьезно, любая помощь будет оценили.

1 Ответ

0 голосов
/ 06 апреля 2020

Вы хотите найти товары с той же ценой. это означает, что могут быть случаи, когда вы будете вводить else-statement, и вы будете делать и делать i++, что означает, что вы пропускаете некоторые элементы массива c. использовать другой счетчик для массива c, например:

void align_prod(product a[],int b[],product c[]){
int i = 0 , j = 0;
while (i<5)
{
    if ((a[i].price == b[i]) && (a[i].ident == i))
    {
        c[j] = a[i];
        i++;
        j++;
    }
    else
    {
        i++;
    }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...