Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Суковатова / лаба7
.docМОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЛЕСА
Факультет электроники и системотехники.
Лабораторная работа № 7
по программированию на языке высшего уровня С
Тема: «Указатели»
Выполнил студент: Суковатова Л.Н.
ВТ-11
Проверил: Ларионов Н.В.
Москва 2012 г.
II. 1. Условия задачи: в одномерном массиве, состоящем из n-целочисленных элементов вычислить:
а) минимальный по модулю элемент массива.
б) сумму модулей элементов массива, стоящих после первого элемента, равного 0.
в) преобразовать массив так, чтобы в первой половине шли элементы, которые стоят на четных позициях, а потом — на нечетных.
Оформить в виде указателей.
2. Данные:
а) Исходные: a[i]
б) Рабочие: k
в) Выходные:min, s, b[j]
3. Листинг программы:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 10
int minimum(int a[])
{
int min,*pmin=&min,*pi;
*pmin=fabs(a[0]);
for (pi=a+1;pi<a+n;(pi)++)
if (fabs(*pi)<*pmin) *pmin=fabs(*pi);
return(*pmin);
}
int summ(int a[])
{
int k,*pk,*pi,sum,*psum=∑
for (pi=a;pi<a+n;pi++)
if (*pi==0)
{
*pk=*pi;
break;
}
*psum=0;
for (pi=*pk+a;pi<a+n;pi++)
(*psum)+=fabs(*pi);
return(*psum);
}
void sortirovka(int a[],int b[])
{
int *pi,*pj;
pj=b;
for (pi=a;pi<a+n;pi+=2)
{*pj=*pi;
pj++;
};
for (pi=a+1;pi<a+n;pi+=2)
{*pj=*pi;
pj++;
}
}
main()
{ int *pi,*pj;
int a[n]={5,-3,0,1,9,-2,4,7,8,0};
int b[n];
int m= minimum(a);
int s=summ(a);
printf("\n");
printf("Min=%i \n",m);
printf("Summa=%i \n",s);
sortirovka(a,b);
for (pi=a;pi<a+n; pi++)
printf("%i ",*pi);
printf("\n");
printf("Preobrazovanii massiv:\n");
for (pj=b;pj<b+n; pj++)
printf("%i ",*pj);
printf("\n");
system("pause");
return 0;}