Прикреплённый файл «2.c»

Загрузка

   1 #include <stdio.h>
   2 #include <stdlib.h>
   3 
   4 int *a=NULL; // мой массив (подлежит расширению по необходимости)
   5 int size=0; // текущая емкость массива
   6 int count=0; // занятая емкость массива (count <= size)
   7 int step=4;
   8 
   9 void append( int k )
  10 {
  11     int *new_a;
  12     int j;
  13 
  14     // если в массиве не осталось пустого места
  15     // (в частности, в начале, когда массив вообще нулевой длины)
  16     if( count == size )
  17     {
  18         new_a = malloc( (size + step) * sizeof(int) );
  19         if( new_a == NULL )
  20         {
  21             return; // выходим и ничего не делаем.
  22             // собственно говоря, ничего другого в этой функции
  23             // и не поделаешь.
  24         }
  25 
  26         // переписываем заполненный фрагмент массива в новое,
  27         // увеличенное место памяти.
  28         for( j = 0; j < count; j ++ )
  29         {
  30             new_a[j] = a[j];
  31         }
  32         free(a);
  33         a = new_a; // текущий массив будет увеличенного размера
  34         printf( " -- произведено увеличение емкости с %d до %d элементов\n",
  35                 size, size+step);
  36         size = size + step;
  37     }
  38 
  39     // в этой точке гарантируется, что в массиве есть свободное место, т.е.
  40     // count < size, и можно выполнить очередное присваивание в a[count].
  41 
  42     a[count] = k;
  43     count ++;
  44 
  45 }
  46 
  47 int main()
  48 {
  49     int n;
  50     int i;
  51     int k;
  52 
  53     printf( "n?\n" );
  54     scanf("%d", &n );
  55     printf( "n = %d\n", n );
  56 
  57     for ( i = 0; i < n; i ++ )
  58     {
  59         scanf("%d", &k );
  60         append( k );
  61     }
  62 
  63     for( i = n-1; i >= 0; i-- )
  64     {
  65         printf( "%d ", a[i] );
  66     }
  67     printf("\n");
  68 
  69     return 0;
  70 }

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.