Практические / Отчеты студентов 2011-2012 / ВТ-12 ЛР / Смирнов / Laba_10
.docxМосковский государственный университет леса
Факультет электроники и системотехники
Лабораторная работа №10
Тема: Файлы
Выполнил: Смирнов С.А.
Группа: ВТ-12
Москва 2012
Задание
в одномерном массиве, состоящем из п вещественных элементов, вычислить:
1) максимальный по модулю элемент массива;
2) сумму элементов массива, расположенных между первым и вторым положительными элементами.
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <stdlib.h>
#define N 10
int main()
{
int a[N];
double max, sum, tmp;
int i, maxi, j;
FILE *fp;
fp=fopen("test dat","w");
for ( i = 0; i < N; ++i )
scanf("%d",&a[i]);
for ( i = 0; i < N; ++i )
fprintf(fp,"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]);
}
}
fprintf(fp,"\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;
fprintf(fp,"\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;
}
}
for ( i = 0; i < N; ++i )
fprintf(fp,"ARR[%d] = %5.1d\n", i, a[i]);
fclose(fp);
system("pause");
return 0;
}