#cpp #функции
Есть код программы, которая позволяет ввести динамический массив, а затем 1. Упорядочивает элементы массива по возрастанию. 2. Находит сумму отрицательных элементов массива. 3. Находит произведение элементов массива, расположенных между максимальным и минимальным элементами. Не получается грамотно разбить код на многофайловый проект. #include "stdafx.h" #includeusing namespace std; double *p, n; double pr = 1; int sum, min = 1000000, max = -1000000, i_, j_; int main() { setlocale(LC_ALL, "Russian"); cout << "Введите количество элементов: "; cin >> n; p = new double[n]; cout << "Введите элементы массива: "; for (int i = 0; i < n; i++) cin >> p[i]; for (int i = 0; i < n; i++) { if (p[i] < 0) sum += p[i]; if (max < p[i]) { max = p[i]; i_ = i; } if (min > p[i]) { min = p[i]; j_ = i; } } if (i_ > j_) swap(i_, j_); for (int i = (i_ + 1); i < j_; i++) pr *= p[i]; for (int i = 0; i < n; i++) for (int j = i; j > 0 && p[j - 1] > p[j]; j--) swap(p[j], p[j - 1]); cout << "Отсртированный массив: "; for (int i = 0; i < n; i++) cout << p[i] << " "; cout << endl; cout << "Сумма отрицатльных элементов: " << sum < Ответы
Ответ 1
Ты уже большую часть ответа написал в вопросе. Нужно выделить такие функции и соответствующим образом их вызвать: Ввести динамический массив Упорядочивает элементы массива по возрастанию. Находит сумму отрицательных элементов массива. Находит позицию минимального элемента Находит положение максимального элемента Находит произведение элементов массива между заданными позициями Выводит массивОтвет 2
Ну, я бы делал примерно так, с обязательным уничтожением глобальных переменных как класса: #includeusing namespace std; void inputArray(double*&p, int&size) { cout << "Введите количество элементов: "; cin >> size; p = new double[size]; cout << "Введите элементы массива:\n"; for (int i = 0; i < size; i++) { cout << "p[" << i << "] = "; cin >> p[i]; } } void outArray(double*p, int size, const char * msg) { cout << msg << "\n"; for(int i = 0; i < size; ++i) cout << p[i] << " "; cout << "\n"; } inline void swap(int& a, int& b) { int tmp = a; a = b; b = tmp; } void sortArray(double*p, int size) { for (int i = 0; i < size; i++) for (int j = i; j > 0 && p[j - 1] > p[j]; j--) swap(p[j], p[j - 1]); } double negSum(double*p, int size) { double sum = 0.0; for (int i = 0; i < size; i++) if (p[i] < 0) sum += p[i]; return sum; } void minmax(double*p, int size, int& min_idx, int& max_idx) { double min = p[min_idx = 0], max = p[max_idx = 0]; for(int i = 1; i < size; ++i) { if (p[i] < min) { min = p[min_idx = i]; } else if (p[i] > max) { max = p[max_idx = i]; } } } double product(double*p, int min_idx, int max_idx) { double prod = 1.0; for(int i = min_idx; i <= max_idx; ++i) prod *= p[i]; return prod; } int main() { setlocale(LC_ALL, "Russian"); double * p; int size; inputArray(p,size); outArray(p,size,"Исходный массив"); cout << "Сумма отрицательных элементов = " << negSum(p,size) << endl; int min_idx, max_idx; minmax(p,size,min_idx,max_idx); if (max_idx == min_idx) { cout << "Между максимальным и минимальным значениями нет чисел" << endl; } else { cout << "Произведение между максимальным и минимальным элементами: " << product(p,min_idx,max_idx) << endl; } sortArray(p,size); outArray(p,size,"Отсортированный массив"); delete[] p; }
Комментариев нет:
Отправить комментарий