2016-10-15 2 views
0

Привет, этот код является всего лишь примером того, чем я работаю. У меня есть решение, скопировав все из моей функции поиска и выгрузив его в мою функцию редактирования. Есть ли лучшее решение, а не просто скопировать вставку?функция поиска и редактирования без копирования пасты?

struct inventory 
    { 
     float a,b,c,d; 
     char something[MAXSIZE]; 
    }; 
typedef struct inventory Inventory; 

struct будет содержать некоторое целое число с плавающей точкой и некоторые символы.

void search(const Inventory inv[], int np); // declare search function 
void edit(struct inventory inventoryRegister[],int np); 

int main(void) 
    { 

     int np=0; 
     struct inventory inventoryRegister[MAXSIZE]; 


// calling the functions search and edit 

      search(inventoryRegister, np); 
      edit(inventoryRegister, np); 

     return 0; 
     } 

void search(const Inventory inv[], int np) 
{ 
    int i, 
    float min, max; 

    printf("Enter min max"); 
    scanf("%f %f", &min, &max); 

    for (i = 0; i < np; i++) 
     if (inv[i].a >= low && inv[i].a <= high) 
      { 
        print.. 
       } 
    //repeat for b,c,d and something 
    } 

void edit(struct inventory inventoryRegister[],int np) 
{ 
     int a; 
     print("Enter new a"); 
      scanf("%f", &a); 

    // Here i can copy and paste my entire search function and do a loop to replace the min & max with my new input a. 
But is there any easier way to do it? say i call the search(); and somehow extract the elements between min & max and do a loop replacement with a? 
Any suggestion? 


    } 
+0

Есть на структуру, которая хранит действительные местоположения 'min' и' 'max' говорят структура LOC {INT ГВО, внутр MAXLOC};' Чтобы получить местоположения min и max, создайте функцию, которая возвращает это 'struct loc', а затем вы можете вызвать эту функцию, чтобы получить местоположения и искать/печатать/редактировать значения, итерации по диапазону вашего массива. смысл? – Recker

+0

@Recker я вроде получаю его, но не 100% может сделать простой образец кода? – xxFlashxx

ответ

0

Отказ от ответственности: его вид кода псевдо

struct MinMaxLocation 
{ 
    int minloc; 
    int maxloc; 
}; 

struct MinMaxLocation getMinMaxLocation(struct inventory inventoryRegister[],float min,float max) 
{ 
    // your logic to find min and max locations here 

    struct MinMaxLocation loc; 
    loc.minloc = // min element location 
     loc.maxloc = // max element location 
     return loc; 
} 

void search(....) 
{ 
    struct MinMaxLocation loc_here_search = getMinMaxLocation(inventoryRegister,min,max); 
    for (i = loc_search_here.min; i < loc_search_here.max; i++) 
    { 
     print ... 
    } 
} 

void edit(....) 
{ 
    struct MinMaxLocation loc_here_search = getMinMaxLocation(inventoryRegister,min,max); 
    for (i = loc_search_here.min; i < loc_search_here.max; i++) 
    { 
     edit the values here ... 
    } 
} 
Смежные вопросы