Одномерные массивы. Помогите,пожалуйсто !

Ответить
Ксенияя
Сообщения: 4
Зарегистрирован: 27 дек 2009, 17:42

В одномерном массиве, состоящем из n вещественных элементов, вычислить :

1) Сумму положительных элементов массива;
2) Произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.

Упорядочить элементы массива по убыванию.
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

ICQ 395546[двести+восемнадцать]
мыло [ник на форуме]@mail.ru
помогу за вознаграждение
Ксенияя
Сообщения: 4
Зарегистрирован: 27 дек 2009, 17:42

нет, спасибо(
RUSt
Сообщения: 8
Зарегистрирован: 30 дек 2009, 23:15

Не на ФЭТ учишься (потом удивляешься, что за программисты у нас с вышкой, самоучки и то умнее)? задача-то с 1-го курса, я ещё помню её решал на turbo pascal.
если актуально, пиши в личку или на Nexx_MP@mail.ru
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

1 - делается в один цикл. Полистайте учебник, не ленитесь.
2 - поиск максимума и минимума (только сравниваться будут не сами элементы, а их модули), потом нахождение их номеров, определение, какой из номеров больше, какой меньше, и цикл от меньшего к большему с перемножением всех элементов.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ксенияя
Сообщения: 4
Зарегистрирован: 27 дек 2009, 17:42

Я сделала уже давно ))- Спасибо )
Ну как сделала )
Там 4 ошибки выдаёт - не исправить (


/*

*
* В одномерном массиве состоящем из n вещественных элементов вычислить:
* 1) сумму положительных элементов
* 2) произведение элементов массива стоящих между максимальным по модулю
* и минимальным по модулю элементами.
* Упорядочить элементы массива по убыванию.
*
*/

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
int n;

cout << "Enter n: "; // Ввод количества элементов массива
cin >> n;

float *arr = new float [n]; // Создание массива

for (int i = 0; i <= n-1; i++)
{
cout << "Enter element number " << i + 1 << " : "; // Ввод элементов массива
cin >> arr;
}

float summ = 0; // Сумма положительных элементов

int maxelem, minelem; // Номера максимального и минимального элементов
maxelem = minelem = 0;

for (int i = 0; i <= n-1; i++) // Цикл для обхода массива
{
if (arr > 0)
summ += arr; // Сумма положительных элементов

if (fabs(arr) > fabs(arr[maxelem])) maxelem = i; // Определение номера максимального по модулю элемента
if (fabs(arr) < fabs(arr[minelem])) minelem = i; // И минимального
}

cout << "Summ of positive elements = " << summ << endl; // Вывод суммы положительных елементов

if (abs(maxelem - minelem) > 1) // Если между максимальным и минимальным по модулю элементами
{ // есть элементы

int stelem = (maxelem < minelem ? maxelem : minelem); // Определяем какой из максимального и минимального элементов
int endelem = (maxelem < minelem ? minelem : maxelem); // имеет меньший номер

float multipl = 1;

for (int i = stelem + 1; i < endelem; i++)
multipl *= arr; // Произведение промежуточных элементов

cout << "Product of elements between max and min = " << multipl << endl; // Вывод полученного произведения
}
else
cout << "No elements between max and min.";


cout << "Source array:\n[";
for (int i = 0; i <= n-1; i++) // Вывод исходного массива
cout << arr << (i < n-1 ? ", " : "]\n"); //



// Сортировка массива методом сравнения

float temp; // Переменная для временного хранения значения элемента при обмене

for (int i = 0; i < n-1; i++) // Проход всего массива кроме последнего элемента
{
for (int j = i + 1; j <= n-1; j++) // Проход оставшейся части массива
{
if (arr < arr[j]) // Сравнение текущего элемента с элементом из оставшейся части.
{
temp = arr; // Обмен значений элементов если они стоят в неправильном порядке
arr = arr[j];
arr[j] = temp;
}
}
} // Конец сортировки



cout << "Array sorted by decreasing:\n[";
for (int i = 0; i <= n-1; i++) // Вывод отсортированного массива
cout << arr[i] << (i < n-1 ? ", " : "]\n"); //

delete [] arr;

return 0;
}
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

Ксенияя
какие ошибки?
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

Код: Выделить всё

/*

*
* В одномерном массиве состоящем из n вещественных элементов вычислить:
* 1) сумму положительных элементов
* 2) произведение элементов массива стоящих между максимальным по модулю
* и минимальным по модулю элементами.
* Упорядочить элементы массива по убыванию.
*
*/

#include <iostream>
#include <math.h>
using std::cin;
using std::cout;
using std::endl;
int main(){
	int n,i,j,
		maxelem, minelem;		// Номера максимального и минимального элементов
	float	summ = 0,			// Сумма положительных элементов
			temp;
	cout << "Enter n: ";		// Ввод количества элементов массива
	cin >> n;
	float *arr = new float [n]; // Создание массива
	for (i = 0; i < n; i++){
		cout << "Enter element number " << i + 1 << " : ";		// Ввод элементов массива
		cin >> arr[i];
	}
	maxelem = minelem = 0;
	for (maxelem=minelem=i=summ=0;i<n;i++){
		if (arr[i] > 0) summ += arr[i];							// Сумма положительных элементов
		if (fabs(arr[i]) > fabs(arr[maxelem])) maxelem = i;		// Определение номера максимального по модулю элемента
		if (fabs(arr[i]) < fabs(arr[minelem])) minelem = i;		// И минимального
	}
	cout << "Summ of positive elements = " << summ << endl;		// Вывод суммы положительных елементов
	if (abs(maxelem - minelem) > 1){	// Если между максимальным и минимальным по модулю элементами
										// есть элементы
		int stelem = (maxelem < minelem ? maxelem : minelem); // Определяем какой из максимального и минимального элементов
		int endelem = (maxelem < minelem ? minelem : maxelem); // имеет меньший номер
		for (i = stelem + 1,temp = 1; i < endelem; i++)
			temp *= arr[i]; // Произведение промежуточных элементов
		cout << "Product of elements between max and min = " << temp << endl; // Вывод полученного произведения
	}
	else
		cout << "No elements between max and min.";
	cout << "Source array:\n[";
	for (i = 0; i < n; i++)							// Вывод исходного массива
		cout << arr[i] << (i < n-1 ? ", " : "]\n"); //
	// Сортировка массива методом сравнения:
	for (int i = 0; i < n-1; i++)				// Проход всего массива кроме последнего элемента
		for (int j = i + 1; j <= n-1; j++)		// Проход оставшейся части массива
			if (arr[i] < arr[j]){				// Сравнение текущего элемента с элементом из оставшейся части.
				temp = arr[i];					// Обмен значений элементов если они стоят в неправильном порядке
				arr[i] = arr[j];
				arr[j] = temp;
			}

	cout << "Array sorted by decreasing:\n[";
	for (i = 0; i < n; i++) // Вывод отсортированного массива
		cout << arr[i] << (i < n-1 ? ", " : "]\n"); //
	delete [] arr;
	cin.get(),cin.get();
	return 0;
} 
ошибок невыдает
Ксенияя
Сообщения: 4
Зарегистрирован: 27 дек 2009, 17:42

забыла i и j инициализировать ))
всё хорошо)
всё работает )
спасибо !
Ответить