Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
16
Добавлен:
17.04.2015
Размер:
12.93 Кб
Скачать

Московский государственный университет леса

Факультет электроники и системотехники

Лабораторная работа №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;

}

Соседние файлы в папке Смирнов