Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2014, 18:00   #1
Fareng
Новичок
Джуниор
 
Регистрация: 10.12.2014
Сообщений: 1
По умолчанию Преобразование массива с использованием функций

Уже битый час все никак не могу победить этот треклятый массив, может кому интересно помочь до ума его довести?))
Задание: Создать функцию, определяющую среднее арифметическое значение элементов вектора vectorn, находящихся между вторыми по значению максимальным и минимальным его элементами. Предусмотреть случай, когда таких элементов нет.

Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <time.h>

void vect_mass(int pp, int v_max, int v_min, int vect[pp]);
int arifsumma_max2(int pp, int vect[pp], int imax_1, int imin_1);

int main()
{
	int i,  p, a, b, vect_min, vect_max, arifsumma, min_1, max_1, i_min_1, i_max_1;
									
	printf("\nVvedite nizhnyuyu granicu diapazona");
	scanf("%d", &vect_min);
	printf("\nVvedite verhnyuyu granicu diapazona:");
	scanf("%d", &vect_max);
	printf("\nVvedite razmer vectora:");
	scanf("%d", &p);
	
	int vector[p];
	
	printf("\nIshodny vector:\n"); 

    vect_mass(p, vect_min, vect_max, vector);  //вызываем функцию для определения элементов вектора
	
	for (i=0; i<p; i++)                    //выводим вектор на экран
	{		
		printf("%5d", vector[i]);		
	    
	}
    
	//выявляем максимумы и минимумы вектора
	
	//первый цикл поиска минимумов и максимумов 
	max_1 = vector[0];
	for (i=1; i<p; i++)	{	
		if (vector[i] > max_1)
			max_1 = vector[i];
			i_max_1=i;
		}
		
			
	min_1 = vector[0];
	for (i=1; i<p; i++)	{	
		if (vector[i] < min_1)
			min_1 = vector[i];
			i_min_1=i;
	    }
		

//второй цикл поиска минимумов и максимумов
	
a = i_min_1;
b = i_max_1;
max_1 = vector[i_min_1];
min_1 = vector[i_max_1];
i_max_1 = 0;
i_min_1 = 0;

for (i=0; i<p ; i++)  //второй цикл поиска max и min
{
    if ((i == a) || (i == b))
    continue;

    if (vector[i] > max_1){
    
    max_1 = vector[i];
    i_max_1 = i;
    
	}

    if (vector[i] < min_1){
    
      min_1 = vector[i];
       i_min_1 = i;
    }
	
}

		
	printf("\nmin_2=:%3d", min_1);
	printf("   i_min_2=%3d", i_min_1);
    printf("\nmax_2=:%3d", max_1);
    printf("   i_max_2=%3d", i_max_1);
    printf("\n");

	arifsumma = arifsumma_max2(p, vector, i_max_1, i_min_1);
	
	printf("\nSrednearifmeticheskaya summa elementov mezhdu min_2 i max_2: %d", arifsumma);
	
	getch();
	  
	  return 0;
        
}

//описание функций

// 1. формирование вектора
void vect_mass(int pp, int v_min, int v_max, int vect[pp])
{
	int i, m;
	time_t t;		// текущее время для инициализации 
					// генератора случайных чисел
					
	srand((unsigned) time(&t));	// инициализация генератора
								// случайных чисел
	
	m = v_max-v_min + 1;
	
		// получение случайного числа в диапазоне
		// от vect_min  до  vect_max
		
	for (i=0; i<pp; i++)		
		vect[i]=rand()% m + v_min;		
} 

// 2. определение суммы элементов между вторыми по максимальному и минимальному значению элементами вектора
int arifsumma_max2(int pp, int vect[pp], int imax_1, int imin_1)
{
int m, summa, i;
int asumma;	
//случай, когда между минимум и максимум нет элементов, либо только один
m=fabs(imin_1-imax_1)-1;
if (m==0 || m==1)
{
printf("Mezdy min_2 and max_2 net ili 1 element");
}

else if(imax_1<imin_1)         //цикл определения среднеарифметической суммы
	{
		for(i=imax_1+1;i<imin_1;i++)
		summa+=vect[i];
	}
	
		
		else if(imin_1<imax_1)
			{
				for(i=imin_1+1;i<imax_1;i++)
                 summa+=vect[i];
			}
			asumma=summa/i;
			return asumma;
			
}

Последний раз редактировалось Fareng; 10.12.2014 в 18:05. Причина: редакт. кода
Fareng вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование с использованием функций. Язуджи Помощь студентам 1 22.12.2013 23:24
Нужно исправить задачу на удаление строк двумерныого массива с использованием процедур и функций maksimum Помощь студентам 4 01.05.2012 06:33
Программа с использованием функций. Маx Паскаль, Turbo Pascal, PascalABC.NET 2 30.03.2012 22:06
инициализация массива, вывод массива и обработка массива должны быть реализованы с помоshью функций airesjke Помощь студентам 0 02.03.2012 16:14
ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ФУНКЦИЙ Dmitry_Web Помощь студентам 2 09.12.2011 22:56