Итак, в основном моя проблема в том, что у меня есть отсортированный массив целых и массив структур, называемых 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++;
}
}
}
Серьезно, любая помощь будет оценили.