Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Шадлова / Лабораторная работа №4
.docМосковский Государственный Университет Леса
ФЭСТ ВТ-11
Лабораторная работа №4.
Программирование на языках высокого уровня
Тема: “Одномерные массивы”
Выполнил студент Шадлова Н.А.
Проверил Ларионов Н.В.
Москва 2011.
1. Условия задания:
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) максимальный по модулю элемент массива;
2) сумму элементов массива, расположенных между первым и вторым положительным элементами.
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
2. Листинг программы:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#define N 10
#define YES 1
#define NO 0
float array[N];
int main()
{
int imax,fplus,splus,j,k = 0;
float summ,max,temp;
for (int i = 0;i < N;i++)
{
printf("Vvedite element massiva %d: ",i+1);
scanf("%f",&array[i]);
}
max = array[0];
imax = 0;
for(i = 0;i < N;i++)
if (fabs(array[i]) > max)
{
max = fabs(array[i]);
imax = i;
}
fplus = 0;
splus = 0;
for(i = 0;i < N;i++)
{
if (array[i] > 0)
{
fplus = i;
break;
}
}
printf("%d\n",fplus);
for(i = fplus + 1;i < N;i++)
{
if (array[i] > 0)
{
splus = i;
break;
}
}
printf("%d\n",splus);
summ = 0;
for(i = fplus;i <= splus;i++)
summ += array[i];
k = 0;
int is_zero = 1;
for (i = 0;i < N-k;i++)
{
if (array[i] == 0)
{
for(int j = N - k;j > 0;j--)
{
if (array[j] != 0)
{
for(int m = j - 1;m >= 0;m--)
{
if (array[m] == 0)
{
is_zero = YES;
break;
}
else
is_zero = NO;
}
if (is_zero == NO) break;
if (array[j] != 0 && is_zero == YES)
{
printf("!\n");
array[i] = array[j];
array[j] = 0;
k++;
break;
}
}
}
}
}
printf("=================\n");
for(i = 0;i < N;i++)
printf("%f\t",array[i]);
printf("\nMAX = %d\n",imax);
printf("SUMM = %f\n",summ);
getch();
return 0;
}