3axap_010

array.cpp

Jun 20th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1. // array+tree.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. // Организовать ввод информации в массив, организованный по принципу бинарногодерева(для k-огоэлемента: если левое поддерево,
  3. //то сделать 2k, есli правое, то 2k+1).
  4.  
  5. #include "pch.h"
  6. #include <iostream>
  7.  
  8. int get_int()
  9. {
  10.     int i, n;
  11.     do
  12.     {
  13.         i = fscanf_s(stdin, "%d", &n);
  14.         if (!i)
  15.         {
  16.             rewind(stdin);
  17.             continue;
  18.         }
  19.     } while (!i);
  20.  
  21.     return n;
  22. }
  23.  
  24. void array_output(int* array, int size)
  25. {
  26.     int i = 0;
  27.     for (i = 0; i < size; i++)
  28.     {
  29.         fprintf(stdout, "%3d", array[i]);
  30.     }
  31.     fprintf(stdout, "\n");
  32. }
  33.  
  34. int* array_fill(int* array, int &lenght)
  35. {
  36.     int i, j, k;
  37.  
  38.     while (1)
  39.     {
  40.         j = get_int();
  41.         if (j == 999)
  42.         {
  43.             break;
  44.         }
  45.  
  46.         array = (int*)realloc(array, sizeof(int) * (++lenght));
  47.         if (lenght == 1)
  48.         {
  49.             array[0] = j;
  50.         }
  51.         else
  52.         {
  53.             i = 0;
  54.             while (i < lenght - 1 && array[i] <= j)
  55.             {
  56.                 i++; //array[i] > j || lenght
  57.             }
  58.            
  59.             if (lenght - 1 == i)
  60.             {
  61.                 array[i] = j;
  62.             }
  63.             else
  64.             {          
  65.                 while (i < lenght)
  66.                 {
  67.                     k = array[i];
  68.                     array[i++] = j;
  69.                     j = k;
  70.                 }
  71.                
  72.             }
  73.         }
  74.     }
  75.  
  76.     return array;
  77. }
  78.  
  79.  
  80. int main()
  81. {
  82.     int* array = NULL;
  83.     int size = 0;
  84.  
  85.     array = array_fill(array, size);
  86.  
  87.     array_output(array, size);
  88.  
  89.     free(array);
  90.  
  91.     return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment