Помогите, пожалуйста! Вот задание: В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1. произведение положительных элементов массива; 2. сумму элементов массива, расположенных до минимального элемента. Упорядочить по возрастанию отдельно элементы, стоящие на чётных местах, и элементы, стоящие на нечётных местах. Код:
Код | #include <iostream> using namespace std;
double pr_pol(const double m[], const int n); double sum_min(const double m[], const int n); void sort(double m[], const int n);
int main() { setlocale(LC_ALL, "rus"); int n; cout << "Введите размер массива: "; cin >> n;
double *m = new double[n]; for (int i = 0; i<n; i++) { cout << "Введите m[" << i << "]: "; cin >> m[i]; }
cout << "Произведение положительных элементов равно " << pr_pol(m, n) << endl; cout << "Сумма элементов массива, расположенных до минимального элемента " << sum_min(m, n) << endl; cout << "Отсортированный массив: " << endl; sort(m, n); for (int i = 0; i<n; i++) cout << "m[" << i << "] = " << m[i] << endl; system("pause"); return 0; }
double pr_pol(const double m[], const int n) { double pr = 1; for (int i = 0; i<n; i++) if (m[i] > 0) pr *= m[i]; return pr; }
double sum_min(const double m[], const int n) { int min = 0; for (int i = 1; i<n; i++) if (m[i] < m[min]) min = i;
double sum = 0; for (int i = 0; i < min; i++) sum += m[i]; return sum; }
void sort(double m[], const int n) { bool is_swap; double buff; do{ is_swap = false; for (int i = 0; i < n; i += 2) { for (int j = i; j < n; j += 2) { if (m[j] < m[i]) { buff = m[i]; m[i] = m[j]; m[j] = buff; is_swap = true; } } }
for (int i = 1; i < n; i += 2) { for (int j = i; j < n; j += 2) { if (m[j] < m[i]) { buff = m[i]; m[i] = m[j]; m[j] = buff; is_swap = true; } } } } while (is_swap); }
|
Сортировка работает не совсем правильно |