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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2014, 01:15   #1
Павел Ромашкин
Новичок
Джуниор
 
Регистрация: 17.11.2014
Сообщений: 1
По умолчанию Одномерные массивы(с++)

Надо найти среднее арифметическое модулей четных элементов массива, расположенных между первым отрицательным и последним положительным элементами.

как прописать что бы считало в нужном мне диапазоне?

Код:
#include <iostream>
#include<iomanip>
#include <math.h>

using namespace std;

void sredArifm(int a[], int, double*, int*, int*, int*);

int main()
{
	double sred;
	int i, n, a[10], posPol, pervOtr, sum;

	cout << "Vvedite razmer massiva: ";
	cin >> n;
	cout << "\Vvedite massiv:\n";
	for (i = 0; i<n; i++)
	{
		cout << "Vvedite a[" << i << "]=";
		cin >> a[i];
	}
	cout << "\Massiv a:\n";
	for (i = 0; i<n; i++)
		cout << setw(7) << a[i];
	cout << endl;

	sredArifm(a, n, &sred, &sum, &posPol, &pervOtr);

	cout << "\nPosPol= " << posPol << "\nPervOtr= " << pervOtr << endl;
	cout << "\nsum= " << sum << endl;

	cout << "\nsred=" << sred << endl;
	system("pause");
	return 0;
}

void sredArifm(int a[], int n, double* sred, int*sum, int*posPol, int*pervOtr)
{


	int i, j;
	
	j = 0, *sum = 0;
	for (i = 0; i < n; i++)
	{
		if (!(a[i] % 2))
		{
			while (a[i] >= 0)
				i++;
				*pervOtr = a[i]; break;
		}
	}
	for (i = n - 1; i >= 0; i--)
	{
		if (!(a[i] % 2))
		{
			if (a[i] > 0)
				*posPol = a[i]; break;
		}
	}
	for (i = *pervOtr; i < *posPol; i++)   // как тут правильно написать?
	{
		if (!(a[i] % 2))
		{
			*sum += abs(a[i]);
			++j;
		}
	}
	cout << "\nj=" << j << endl;

	 *sred = *sum / j;
}
Павел Ромашкин вне форума Ответить с цитированием
Старый 17.11.2014, 08:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как прописать что бы считало в нужном мне диапазоне?
Самое простое - двумя циклами. Один с начала стартанет другой с конца.
Понял идею?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2014, 10:40   #3
Scorpius
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 26
По умолчанию

Поправил.

Код:
#include <iostream>
#include<iomanip>
#include <math.h>

using namespace std;

void sredArifm(int a[], int, double*, int*, int*, int*);

int main()
{
	double sred;
	int i, n, a[10], posPol, pervOtr, sum;

	cout << "Vvedite razmer massiva: ";
	cin >> n;
	cout << "\Vvedite massiv:\n";
	for (i = 0; i<n; i++)
	{
		cout << "Vvedite a[" << i << "]=";
		cin >> a[i];
	}
	cout << "\Massiv a:\n";
	for (i = 0; i<n; i++)
		cout << setw(7) << a[i];
	cout << endl;

	sredArifm(a, n, &sred, &sum, &posPol, &pervOtr);

	cout << "\nPosPol= " << a[posPol] << "\nPervOtr= " << a[pervOtr] << endl;
	cout << "\nsum= " << sum << endl;

	cout << "\nsred=" << sred << endl;
	system("pause");
	return 0;
}

void sredArifm(int a[], int n, double* sred, int*sum, int*posPol, int*pervOtr)
{


	int i, j;

	j = 0, *sum = 0;
	for (i = 0; i < n; i++)
	{
		if (!(a[i] % 2))
		{
			while (a[i] >= 0)
				i++;
				*pervOtr = i; break;
		}
	}
	for (i = n - 1; i >= 0; i--)
	{
		if (!(a[i] % 2))
		{
			if (a[i] > 0)
				*posPol = i; break;
		}
	}
	for (i = *pervOtr; i <= *posPol; i++)
	{
		if (!(a[i] % 2))
		{
			*sum += abs(a[i]);
			++j;
		}
	}
	cout << "\nj=" << j << endl;

	 *sred = (double)*sum / (double)j;
}
Не всегда говори то, что знаешь, но всегда знай, что говоришь.

Последний раз редактировалось Scorpius; 17.11.2014 в 10:44.
Scorpius вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
одномерные массивы alexbec-2011 Помощь студентам 0 25.12.2011 08:16
одномерные массивы Opiym Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 04.01.2010 21:32
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12