Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Борисов / лабораторная11
.docМосковский Государственный Университет Леса
ФЭСТ ВТ-11
Лабораторная работа №11.
Программирование на языках высокого уровня
Тема: “Динамическая память”
Выполнил студент Борисов А.О.
Проверил Ларионов Н.В.
Москва 2012.
Задание:
Написать программу, используя функции и динамическую память.
в одномерном массиве, состоящем из п вещественных элементов, вычислить:
1) количество элементов массива, больших С;
2) произведение элементов массива, расположенных после максимального по
модулю элемента.
Преобразовать массив таким образом, чтобы сначала располагались все отрица-тельные элементы, а потом — все положительные (элементы, равные О, считать
положительными).
Листинг:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
int overc (int n, int *a);
int maximum (int n, int *a);
int summa (int n, int m, int *a);
void sort (int n, int *a);
int main ()
{
clrscr();
const n=10;
int *A;
A=new int [n];
int i,k,m,s;
srand(time(NULL));
for (i=0; i<n; i++)
{
A[i]=rand()%30-15;
printf ("%i ",A[i]);
}
k=overc(n,A);
m=maximum(n,A);
s=summa(n,m,A);
printf ("k=%i s=%i\n",k,s);
sort (n,A);
delete A;
getch();
return 0;
}
int overc (int n, int *a)
{
int c, k;
printf ("\nvvedite c\n");
scanf ("%i",&c);
k=0;
for (int i=0; i<n; i++)
if (a[i]>c) k++;
return (k);
}
int maximum (int n, int *a)
{
int max, m;
max=abs(a[0]);
for (int i=0; i<n; i++)
if (abs(a[i])>max)
{
max=abs(a[i]);
m=i;
}
return (m);
}
int summa (int n, int m, int *a)
{
int s;
s=1;
for (int j=m+1; j<n; j++)
s*=a[j];
return (s);
}
void sort (int n, int *a)
{
int b[10];
int i, k=0;
for (i=0; i<n; i++)
if (a[i]<0)
{
b[k]=a[i];
k++;
}
for (i=0; i<n; i++)
if (a[i]>=0)
{
b[k]=a[i];
k++;
}
for (i=0; i<n; i++)
printf ("%i ",b[i]);
}