Advertisement
Guest User

Untitled

a guest
Jun 21st, 2017
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.40 KB | None | 0 0
  1. Входные данные имеют вид: 123dh678 iphone 100
  2.  
  3. 8символов - шифр, название продукта и количество произведенного продукта. Все это в main читается из файла и добавляется в таблицу с помощью функции table_add. current_num_tables - количество элементов в таблице.
  4.  
  5. struct table
  6. {
  7.     char code[9];
  8.     char name[255];
  9.     int numb;
  10. };
  11.  
  12. void add_table(struct table* t, const char* _code, const char* _name, const int _numb)
  13. {
  14.     size_t i, index = 0;
  15.     if (index == 0)
  16.     {
  17.     strcpy(t[index].code, _code);
  18.     strcpy(t[index].name, _name);
  19.     t[index].numb = _numb;
  20.     index++;
  21.     current_num_tables++;
  22.     }
  23.     binarysearch(_numb, t, current_num_tables);
  24.     index = binarysearch(_numb, t, current_num_tables);
  25.     if (t[index].numb != NULL)
  26.         for (i = 1; i < index; i++)
  27.         {
  28.             memcpy(&t[i], &t[i - 1], sizeof(*t));
  29.         }
  30.     else
  31.     {
  32.         strcpy(t[index].code, _code);
  33.         strcpy(t[index].name, _name);
  34.         t[index].numb = _numb;
  35.     }
  36.     current_num_tables++;
  37.     return;
  38. }
  39.  
  40. int binarysearch(size_t a, struct table* t, size_t n)
  41. {
  42.     int low, high, middle;
  43.     low = 0;
  44.     high = n - 1;
  45.     while (low <= high)
  46.     {
  47.         middle = (low + high) / 2;
  48.         if (a < t[middle].numb)
  49.             high = middle - 1;
  50.         else if (a > t[middle].numb)
  51.             low = middle + 1;
  52.         else
  53.             return middle;
  54.     }
  55.     return -1;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement