Есть код программы, которая позволяет ввести динамический массив, а затем
1. Упорядочивает элементы массива по возрастанию.
2. Находит сумму отрицательных элементов массива.
3. Находит произведение элементов массива, расположенных между максимальным и минимальным элементами.
Не получается грамотно разбить код на многофайловый проект.
#include "stdafx.h"
#include <iostream>
using 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 <<endl;
if (pr != 1)
{
cout << "Произведение между максимальным минимальным элементами: " << pr << endl;
}
else
cout << "Между максимальным и минимальным значениями нет чисел" << endl;
system("pause");
return 0;
}
Ты уже большую часть ответа написал в вопросе.
Нужно выделить такие функции и соответствующим образом их вызвать:
Ну, я бы делал примерно так, с обязательным уничтожением глобальных переменных как класса:
#include <iostream>
using 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;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Мне нужно, чтобы в случае неверного ввода password запрашивало password до тех пор пока не будет password верен
Нужно написать функцию, которая с помощью рекурсии могла бы найти введенное значение, без рекурсии вроде бы как сделалВот код
"Реализуйте АТД “стек” на основе массива фиксированного размера для элементов, являющихся односвязными списками целых чисел (те