Лабораторные / Лр №11. Динамическая память / Лр №11Пример.Дин пам
.odt//Пример выполнения Лр №11.Динамическая память.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int sumotr(int *a,int n);
int summm(int *a,int n);
void sort(int *a,int n);
int main()
{
int i,s, N; //Задаем размер памяти
int *A; // Создаем указатель на динамическую память
printf («Ввети к-во элементов массива > ");
scanf ("%d", &N);
A = new int [N]; // Выделение динамической памяти
for (i = 0; i < N; i ++ )
scanf ("%d", &A[i]);
for (i = 0; i < N; i ++ )
printf ("%d ", A[i]);
printf("\n");
s=sumotr(A,N); //Вычисление суммы отрицательных элементов
printf("Sotr= %i \n",s);
s=summm(A,N); // Вычисление суммы элементов между наибольшим и
// наименьшимзначениями
printf("Smm= %i \n",s);
sort(A,N); //Упорядочение элементов массива по возростанию
for (i = 0; i < N; i ++ )
printf ("%d ", A[i]);
delete A; // Освобождение памяти
system("pause");
return 0;
}
int sumotr(int *a,int n)
{ int i,sot=0;
for(i=0;i<n;i++)
if(a[i]<0)sot+=a[i];
return (sot); }
int summm(int *a,int n)
{int i, sum,max,imax,min,imin;
max=min=a[0];
for(i=1; i<n;i++){
if (a[i]>max){max=a[i];imax=i;}
if (a[i]<min){min=a[i];imin=i;}
}
sum=0;
if(imax<imin)
for(i=imax+1;i<imin;i++)sum+=a[i];
else
for(i=imin+1;i<imax;i++)sum+=a[i];
return (sum);}
void sort(int *a,int n)
{int i,j,k;
for (i=0;i<n-1;i++)
for (j=0;j<n-1;j++)
if(a[j]>a[j+1]){
k=a[j];
a[j]=a[j+1];
a[j+1]=k;}
}
//2 3 -6 5 4 -3 4 6 9 3
//Sotr= -9
//Smm= 16
//-6 -3 2 3 3 4 4 5 6 9
//