Практические / Отчеты студентов 2011-2012 / ВТ-12 ЛР / Федюкин / указатели
.docМосковский Государственный Университет Леса
Факультет ЭСТ
Тема: “Указатели”
Выполнил: Федюкин А.А.
Проверил: Ларионов Н.В.
Москва 2012.
Задание:
1)Найти сумму отрицательных
2)Найти произведение между max и min элементами
Оформить виде функций с указателями
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 10
/////////////////////////////////////////
int sumotiz(int a[]);
int sortirovka(int a[]);
int proizotiz(int a[]);
////////////////////////////////////////
main() {
int a[n];
int i, *pi=&i;
srand(time(NULL));
for (*pi=0;*pi<n;(*pi)++)
{
a[*pi]=rand()%20-10;
printf("%i \n",a[*pi]);
}
int sum,*psum=∑
*psum=sumotiz(a);
//
int p,*pp=&p;
*pp=proizotiz(a);
//
printf("Suuma otrizatelnih elementov=%i \n",*psum);
printf("Proizvedenie=%i \n",*pp);
//
int sor, *psor=&sor;
*psor=sortirovka(a);
system("PAUSE");
return 0;
}
///////////////////////////////////////
int sumotiz(int a[])
{
int sum, *psum=&*psum;
int i,*pi=&i;
*psum=0;
for (*pi=0;*pi<n;(*pi)++)
if (a[*pi]<0) (*psum)+=a[*pi];
return(*psum);
}
////////////
int proizotiz(int a[]){
int ss, *pss=&ss;
int min, *pmin=&min;
int max, *pmax=&max;
int imin, *pimin=&imin;
int imax, *pimax=&imax;
int i1,*pi1=&i1;
int i2,*pi2=&i2;
int i,*pi=&i;
*pmax=*pmin=a[0];
*pimin=*pimax=0;
for (*pi=1;*pi<n;(*pi)++)
{
if (a[*pi]>*pmax) {
*pmax=a[*pi];
*pimax=*pi;
}
if (a[*pi]<*pmin) {
*pmin=a[*pi];
*pimin=*pi;
}
}
if (*pimax>*pimin) {
*pi1=*pimin;
*pi2=*pimax;
}
else{
*pi1=*pimax;
*pi2=*pimin;
}
*pss=1;
for (*pi=*pi1+1;*pi<*pi2;(*pi)++)
*pss*=a[*pi];
return(*pss);
}
//////////
int sortirovka(int a[]){
int s, *ps=&s;
int j, *pj=&j;
int i, *pi=&i;
int k, *pk=&k;
for (*pi=0; *pi<n-1; (*pi)++)
for(*pj=*pi+1; *pj<n;(*pj)++)
if(a[*pi]>a[*pj])
for (*pk=*pi;*pk<=*pj;(*pk)++)
{
*ps=a[*pk];
a[*pk]=a[*pj];a[*pj]=*ps;}
printf("Preobrazovani massiv:\n");
for (*pi=0;*pi<n; (*pi)++)
printf("%i\n",a[*pi]);
printf("\n");
}