SHARE
TWEET

FOR NATASHA

a guest Apr 19th, 2019 103 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Задані дві послідовності цілих i дійсних чисел. Побудувати однозв’язний список, у якому числа послідовностей чергуються.
  2. Якщо останнім елементом списку є ціле число, перенести його на початок списку. Надрукувати списки до та після зміни. */
  3. #define _CRT_SECURE_NO_WARNINGS
  4. #include <stdio.h>
  5. #include <stdbool.h>
  6.  
  7. struct list
  8. {
  9.     float data; //поле даних
  10.     struct list *ptr; //вказівник на наступний елемент
  11. };
  12.  
  13. struct list first_step(float a) //а - значення першого вузла списку
  14. {
  15.     struct list *lst;
  16.     lst = (struct list*)malloc(sizeof(struct list)); //виділення пам'яті під корінь списку
  17.     lst->data = a;
  18.     lst->ptr = NULL; //останній вузол списку
  19.     return *lst;
  20. }
  21.  
  22. void print_list(struct list *lst, int summ);
  23.  
  24. struct list add(struct list *lst, float number)
  25. {
  26.     struct list *temp, *p;
  27.     temp = (struct list*)malloc(sizeof(struct list));
  28.  
  29.     p = lst->ptr; //збереження покажчика на наступний вузол
  30.     lst->ptr = temp; //попередній вузол вказує на той, що створюється
  31.     temp->data = number;
  32.     temp->ptr = p; //створений вузол вказує на наступний елемент
  33.     return *temp;
  34. }
  35. struct list * deletelem(struct list *lst, struct list *root, int summ)
  36. {
  37.     struct list *temp;
  38.     temp = root;
  39.     lst->ptr = root; // переставляем указатель
  40.     // освобождаем память удаляемого узла
  41.     return(lst);
  42. }
  43.  
  44. //
  45. //void insert(struct list* lst, int index, int data)
  46. //{
  47. //  if (index == 0) add(lst, data);
  48. //  else
  49. //  {
  50. //      struct list *current = lst;
  51. //      int i;
  52. //      for (i = 0; i < index; i++)
  53. //      {
  54. //          current = current->ptr;
  55. //      }
  56. //      add(current, data);
  57. //  }
  58. //}
  59.  
  60. void Push(struct list** lst, int data)
  61. {
  62.     struct list *newNode = (struct list*)malloc(sizeof(struct list));
  63.     newNode->data = data;
  64.     newNode->ptr = *lst;
  65.     *lst = newNode;
  66. }
  67.  
  68. void print(struct list *lst, int summ)
  69. {
  70.     struct list *p;
  71.     //struct list *h;
  72.     //h = lst;
  73.     //p = lst;
  74.  
  75.     //for (int i = 0; i < summ; i++)
  76.     //{ //if (i == summ - 1)
  77.     //  //{
  78.     //  h = h->ptr;
  79.     //      //int b = (int)p->data;
  80.     //      if (i == summ - 2)
  81.     //      {
  82.     //          lst = deletelem(h, lst, summ);
  83.     //      }
  84.     //  //}
  85.     //}
  86.     p = lst;
  87.     for (int i = 0; i < summ; i++)
  88.     {
  89.         if (i == summ)
  90.         {
  91.             int b = (int)p->data;
  92.             if ((double)b != p->data)
  93.             {
  94.                 Push(&lst, p->data);
  95.             }
  96.         }
  97.         p = p->ptr; // переход к следующему узлу
  98.     }
  99.     print_list(lst, summ);
  100.  
  101. }
  102.  
  103. void print_list(struct list *lst, int summ)
  104. {
  105.     struct list *p;
  106.     p = (struct list*)malloc(sizeof(struct list));
  107.     p = lst;
  108.  
  109.     for (int i = 0; i < summ; i++)
  110.     {
  111.         printf("%5.2lf", p->data); // вывод значения элемента p
  112.         p = p->ptr; // переход к следующему узлу
  113.     }
  114.     printf("\n");
  115. }
  116.  
  117. void keyboard()
  118. {
  119.     struct list *lst = (struct list*)malloc(sizeof(struct list));
  120.     int answer, answer2, summ;
  121.     float *nums, *nums2;
  122.     bool checked = false, checked2 = false;
  123.  
  124.     printf("How many numbers do you want to enter in integer array?: "); scanf("%d", &answer);
  125.     nums = (float*)malloc(answer * sizeof(float));
  126.  
  127.     printf("\nInput integer array: \n");
  128.     for (int i = 0; i < answer; i++)
  129.     {
  130.         printf("array[%d] = ", i);
  131.         scanf("%f", &nums[i]);
  132.     }
  133.  
  134.     printf("\nYour integer array: \n");
  135.     for (int i = 0; i < answer; i++)
  136.     {
  137.         printf("array[%d] = %3f\n", i, nums[i]);
  138.     }
  139.  
  140.     printf("How many numbers do you want to enter in float array?: "); scanf("%d", &answer2);
  141.     nums2 = (float*)malloc(answer2 * sizeof(float));
  142.  
  143.     printf("\nInput float array: \n");
  144.     for (int i = 0; i < answer2; i++)
  145.     {
  146.         printf("array[%d] = ", i);
  147.         scanf("%f", &nums2[i]);
  148.     }
  149.  
  150.     printf("\nYour array: \n");
  151.     for (int i = 0; i < answer2; i++)
  152.     {
  153.         printf("array[%d] = %6.3f\n", i, nums2[i]);
  154.     }
  155.  
  156.     summ = answer + answer2;
  157.     int j = 0, k = 0, counter = 0;
  158.     for (int i = 0; i < summ; i++)
  159.     {
  160.         if (i == 0)
  161.         {
  162.             lst[i] = first_step(nums2[k]);
  163.             k++;
  164.         }
  165.         else {
  166.             if (i % 2 == 0)
  167.             {
  168.                 if (k > answer2 - 1) {
  169.                     lst[i] = add(lst, nums[j]);
  170.                     j++;
  171.                 }
  172.                 else {
  173.                     printf("%f\n", nums2[k]);
  174.                     lst[i] = add(lst, nums2[k]);
  175.                     k++;
  176.                 }
  177.                
  178.             }
  179.             else
  180.             {
  181.                 if (j > answer - 1) {
  182.                     printf("%f\n", nums2[k]);
  183.                     lst[i] = add(lst, nums2[k]);
  184.                     k++;
  185.                 }
  186.                 else {
  187.                     lst[i] = add(lst, nums[j]);
  188.                     j++;
  189.                 }
  190.             }
  191.         }
  192.     }
  193.     for (int i = 0; i < summ; i++) {
  194.         printf("%f ", lst[i].data);
  195.     }
  196.     printf("Your list: \n");
  197.     print(lst, summ);
  198.  
  199.     system("pause");
  200. }
  201.  
  202. int main()
  203. {
  204. start:
  205.     system("cls");
  206.     printf("Nataliia Byshovets, IS-81, lab 6\n\n");
  207.     int answer;
  208.  
  209.     printf("1 - input numbers.\n");
  210.     printf("2 - print lists.\n");
  211.     printf("3 - exit.\n\n");
  212.  
  213.     printf("What do you want to do?: "); scanf("%d", &answer);
  214.  
  215.     switch (answer)
  216.     {
  217.     case 1:
  218.     {
  219.         keyboard(); //робота з числами, введеними з клавіатури
  220.         goto start;
  221.         break;
  222.     }
  223.     case 2:
  224.     {
  225.         //output(); //виведення чисел з файлу
  226.         goto start;
  227.         break;
  228.     }
  229.     default:
  230.     {
  231.         break;
  232.     }
  233.     }
  234.  
  235.     system("pause");
  236.     return 0;
  237. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top