Практические / Отчеты студентов 2011-2012 / ВТ-12 ЛР / Смирнов / Laba_11 (1)
.docxМосковский государственный университет леса
Факультет электроники и системотехники
Лабораторная работа №11
Тема: Динамическая память
Выполнил: Смирнов С.А.
Группа: ВТ-12
Москва 2012
Задание
в одномерном массиве, состоящем из п вещественных элементов, вычислить:
1) максимальный по модулю элемент массива;
2) сумму элементов массива, расположенных между первым и вторым положительными элементами.
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <stdlib.h>
#define N 10
int main(){
int max, sum, tmp;
int i, maxi, j;
int *A;
A = new int [N];
for ( i = 0; i < N; ++i )
scanf("%d",&A[i]);
for ( i = 0; i < N; ++i )
printf("A[%d] = %5.1d\n", i, A[i]);
maxi = 0;
max = fabs(A[maxi]);
for ( i = 1; i < N; ++i ){
if ( max < fabs(A[i]) ){
maxi = i;
max = fabs(A[maxi]);
}
}
printf("\nMaksimum:\nA[%d] = %.1d\t%.1d\n", maxi, A[maxi], max);
i = 0;
sum = 0;
while ( A[i] < 0 && i < N )
++i;
if ( i == N ){
printf("\nNet pologitelnyh elementov!\n");
goto THREE;
}
++i;
while ( A[i] < 0 && i < N )
sum += A[i++];
if ( i == N ){
printf("\nTolko odin pologitelnyi element!\n");
goto THREE;
}
while (A[i] <= 0)
++i;
++i;
while (A[i] <= 0) {
sum += A[i];
++i;
printf("\nSumma %.1i\n", sum);
THREE:
for ( j = N - 1; j >=0 && A[j] == 0.0; --j )
;
if ( j < 0 ){
printf("\nVse nulevye\n");
return 0;
}
for ( i = 0; i < j; ++i ){
while ( A[i] == 0 && i < j ){
tmp = A[i];
A[i] = A[j];
A[j--] = tmp;
}
}
printf("\nVse nuli v konze\n");
for ( i = 0; i < N; ++i )
printf("ARR[%d] = %5.1d\n", i, A[i]);
delete A;
system("pause");
return 0;
}