Лабораторные / Лр №12. Директивы препроцессора / Пример к Лр№12.Директивы препроцессора
.odt//Пример решения задания к Лр №12.Директивы препроцессора.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include "lib12.h" // Присоединение своей библиотеки
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;
}
//2 3 -6 5 4 -3 4 6 9 3
//Sotr= -9
//Smm= 16
//-6 -3 2 3 3 4 4 5 6 9
//
lib12.h
//Библиотека программ к Лр № 12. Директивы препроцессора.
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;}
}