Программирование на языке высокого уровня. Марапулец Ю.В. - 62 стр.

UptoLike

Составители: 

го память, а далее добавлять последующие элементы массива. Рассмотрим это на приме-
ре функции AddElement(), которой в качестве аргумента передается значение очередного
элемента массива:
int AddElement(int NewKey)
{
int *n; //Промежуточная переменная
if(massiv.mass==NULL) //Ввод первого элемента
{
massiv.mass=(int *)malloc(sizeof(int));
if(massiv.mass==NULL)
return -1;
massiv.maxElement=1;//NVINIT;
massiv.nElement=0;
}
else //Ввод последующих элементов
{
massiv.maxElement++;
n=(int *)realloc(massiv.mass,(massiv.maxElement)*sizeof(int));
if (n==NULL)
return -1;
massiv.mass=n;
}
massiv.mass[massiv.nElement]=NewKey;
return massiv.nElement++;
}
Функция возвращает текущее количество элементов в массиве. Доступ к каждому
элементу производится по его индексу.
Промежуточная переменная n используется в
качестве защиты. Если по какой-либо причине функция realloc() выдаст ошибку, ранее
введенный массив не будет потерян, так как память в этом случае выделяется для n, а не
для самого массива. Рассмотрим пример использования динамического массива. В про-
грамме последовательно создается массив, состоящий из 10 элементов, значение кото-
рых равно удвоенному произведению их порядковых номеров. Далее элементы массива
выводятся через пробел. В заголовочном файле function.h приведен исходный код струк-
туры и функции AddElement(). В результате выполнения программы на экран будут вы-
ведены значения:
0 2 4 6 8 10 12 14 16 18
#include<stdlib.h>
#include<stdio.h>
#include "function.h"
void main()
{
int i;
for (i=0;i<10;i++)
AddElement(i*2);
for (i=0;i<massiv.nElement;i++)
printf("%d ", massiv.mass[i]);
}
62
го память, а далее добавлять последующие элементы массива. Рассмотрим это на приме-
ре функции AddElement(), которой в качестве аргумента передается значение очередного
элемента массива:

int AddElement(int NewKey)
{
       int *n; //Промежуточная переменная
       if(massiv.mass==NULL) //Ввод первого элемента
       {
               massiv.mass=(int *)malloc(sizeof(int));
               if(massiv.mass==NULL)
                      return -1;
               massiv.maxElement=1;//NVINIT;
               massiv.nElement=0;
       }
       else //Ввод последующих элементов
       {
               massiv.maxElement++;
               n=(int *)realloc(massiv.mass,(massiv.maxElement)*sizeof(int));
               if (n==NULL)
                      return -1;
               massiv.mass=n;
       }
       massiv.mass[massiv.nElement]=NewKey;
       return massiv.nElement++;
}

     Функция возвращает текущее количество элементов в массиве. Доступ к каждому
элементу производится по его индексу. Промежуточная переменная n используется в
качестве защиты. Если по какой-либо причине функция realloc() выдаст ошибку, ранее
введенный массив не будет потерян, так как память в этом случае выделяется для n, а не
для самого массива. Рассмотрим пример использования динамического массива. В про-
грамме последовательно создается массив, состоящий из 10 элементов, значение кото-
рых равно удвоенному произведению их порядковых номеров. Далее элементы массива
выводятся через пробел. В заголовочном файле function.h приведен исходный код струк-
туры и функции AddElement(). В результате выполнения программы на экран будут вы-
ведены значения:
0 2 4 6 8 10 12 14 16 18

#include
#include
#include "function.h"

void main()
{
      int i;
      for (i=0;i<10;i++)
             AddElement(i*2);
      for (i=0;i