Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
17.04.2015
Размер:
2.45 Кб
Скачать
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>

#define N 10
#define YES 1
#define NO 0

float* get_ap(float array[],int);
void sort(float array[]);
float find_max(float array[]);
int find_first_plus(float array[]);
int find_second_plus(float array[],int);
void vvod(float array[]);


float array[N];

int main()
{
	int fplus,splus= 0;
	float summ,max;

        vvod(array);

	max = find_max(array);
	printf("!!!!%f!!!!!\n",max);

	fplus = find_first_plus(array);
	splus = find_second_plus(array,fplus);
	printf("!!!%d!!!\n",fplus);
  	printf("!!!%d!!!\n",splus);

	summ = 0;
	for(int i = fplus+1;i < splus;i++)
	  summ += array[i];

	sort(array);

	printf("=================\n");
	for(i = 0;i < N;i++)
	  printf("%f\t",array[i]);
	printf("\nMAX = %f\n",max);
	printf("SUMM = %f\n",summ);
	getch();
	return 0;
}

void sort(float array[])
{
	int i,j,k = 0;
	int is_zero = 1;
	for(i = 0;i < N - k;i++)
	{
		if (array[i] == 0)
		{
			for(j = N - k - 1;j > i;j--)
			{
				if (array[j] != 0)
				{
					for(int m = j;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;
				}
			}
		}
	}

}

float find_max(float array[])
{
	float max = array[0];
	int imax = 0;
	float* ap;
        float* beg = get_ap(array,0);
	for(ap = beg;ap < (beg + N);ap++)
	  if (fabs(*ap) > max)
	  {
	    max = fabs(*ap);
	    imax = (beg + N) - ap;
	  }
	  return max;
}

int find_first_plus(float array[])
{
	int fplus = 0;
        float* beg = get_ap(array,0);
        float* ap = NULL;
	for(ap = beg;ap < (beg + N);ap++)
	{
	  if (*ap > 0)
	  {
	    fplus = ap - beg;
	    return fplus;
	  }
	}
}

int find_second_plus(float array[],int fplus)
{
	int splus;
        float* ap = NULL;
        float* beg = get_ap(array,0);
	for(ap = fplus + 1 + beg;ap < (beg + N);ap++)
	{
	  if (*ap > 0)
	  {
	    splus = ap - beg;
	    return splus;
	  }
	}
	return splus;
}

void vvod(float array[])
{
	for (int i = 0;i < N;i++)
	{
	  printf("Vvedite element massiva %d: ",i+1);
	  scanf("%f",&array[i]);
	}
}

float* get_ap(float array[],int index)
{
	return &array[index];
}
Соседние файлы в папке Лабораторные