Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Борисов / лабораторная7
.docМосковский Государственный Университет Леса
ФЭСТ ВТ-11
Лабораторная работа №7.
Программирование на языках высокого уровня
Тема: “Указатели”
Выполнил студент Борисов А.О.
Проверил Ларионов Н.В.
Москва 2011.
Задание:
В одномерном массиве, состоящем и n вещественных элементов, вычислить:
1)Количество элементов массива, больших C.
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, *pn=&n;
int a[n];
int i, *pi=&i;
int k, *pk=&k;
int m, *pm=&m;
int s, *ps=&s;
srand(time(NULL));
for (pi=a; pi<a+n; pi++)
{
*pi=rand()%30-15;
printf ("%i ",*pi);
}
*pk=overc(*pn,a);
*pm=maximum(*pn,a);
*ps=summa(*pn,*pm,a);
printf ("k=%i s=%i\n",*pk,*ps);
sort (*pn,a);
system ("pause");
getch();
return 0;
}
int overc (int n, int a[])
{
int c, *pc=&c;
int k, *pk=&k;
int i, *pi=&i;
printf ("\nvvedite c\n");
scanf ("%i",&c);
*pk=0;
for (pi=a; pi<a+n; pi++)
if (*pi>*pc) (*pk)++;
return (*pk);
}
int maximum (int n, int a[])
{
int max, *pmax=&max;
int m, *pm=&m;
int i, *pi=&i;
int k=0;
*pmax=abs(*a);
for (pi=a; pi<a+n; pi++)
{
k++;
if (abs(*pi)>*pmax)
{
*pmax=abs(*pi);
*pm=k;
}
}
return (*pm);
}
int summa (int n, int m, int a[])
{
long s, *ps=&s;
int j, *pj=&j;
*ps=1;
for (pj=a+m; pj<a+n; pj++)
{
(*ps)*=*pj;
}
return (*ps);
}
void sort (int n, int a[])
{
int b[10];
int i, *pi=&i;
int k, *pk=&k;
*pk=0;
for (pi=a; pi<a+n; pi++)
if (*pi<0)
{
b[*pk]=*pi;
(*pk)++;
}
for (pi=a; pi<a+n; pi++)
if (*pi>=0)
{
b[*pk]=*pi;
(*pk)++;
}
for (pi=b; pi<b+n; pi++)
printf ("%i ",*pi);
}