Практические / Отчеты студентов 2011-2012 / ВТ-12 ЛР / Снегирев / din pam 11
.docx
Московский государственный университет леса
Факультет электроники и системотехники.
Лабораторная работа №11.
Динамическая память.
Студент: Снегирев Н.В.
Группа: Вт-12
Принял: Ларионов Н.В.
Задание:
Написать программы используя функции и динамическую память.
в одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) Сумму положительных элементов массива;
2) Произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
3) Упорядочить элементы массива по убыванию.
Программа:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int sumpol(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 («vvesti kol massiva> ");
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=sumpol(A,N);
printf("Sum= %i \n",s);
sort(A,N);
for (i = 0; i < N; i ++ )
printf ("%d ", A[i]);
p=proz(A,N);
printf("proizvedenie= %i \n",p);
delete A;
system("pause");
return 0;
}
int sumpol(int *a,int n)
{ int i,sot=0;
for(i=0;i<n;i++)
if(a[i]>0)sot+=a[i];
return (sot); }
int proz(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;}
}