Консультация № 202269
09.03.2022, 15:41
0.00 руб.
0 0 0
Дописать функции.
//В одномерном массиве, состоящем из n вещественных элементов, вычислить:
//номер минимального элемента массива;
//сумму элементов массива, расположенных между первым и вторым отрицательными элементами;
//преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом — все остальные.

#include<iostream>
#include <string>
#include <fstream>
using namespace std;
float findMins(float* p, int n) { // Позиция минимального элемента
int imin=0; // от мусора
int min = p[0];
for (int i = 0; i < n; i++) // цикл
if (p[i] < min)
{
min = p[i];
imin = i;
}
return imin;
}

float findMin(float* p, int n) { // Минимальный элемент
int min = p[0];
for (int i = 0; i < n; i++) // цикл
if (p[i] < min)
{
min = p[i];
}
return min;
}

float findFirst(float* p, int n) { // Найди первое нулевое значение
float ibeg = NULL;
for (int i = 0; i < n; i++) // цикл
if (p[i] < 0)
{
ibeg = i;
break;
}
if (ibeg != NULL) {
return ibeg;
}
else
{
return NULL;
}
}

float findSecond(float* p, int n, int ibeg) { // Нахождение второе нулевое значение
int iend = NULL;
for (int i = ibeg + 1; i < n; i++) // цикл
if (p[i] < 0)
{
iend = i;
break;
}
if (iend != NULL) {
return iend;
}
else {
return NULL;
}
}

void moduls(float* p, int n) { // преоброзовать массив
for (int i = 0; i < n; i++) // цикл
if (fabs(p[i]) <= 1)
{
cout << p[i] << ' ';
}
}

int main()
{
string pach = "FileDate";
ofstream output;
output.open(pach);

if (!output.is_open())
{
cout << "Ошибка при открытии файла";
}
else
{
cout << "Файл сейчас открыт" << endl;
}
setlocale(LC_ALL, "Russian");

int i, n, ibeg = 0, iend = 0; //объявление
float min = 0, sum = 0; //переменных

cout << "Введите размерность n=";
cin >> n; //ввод размерности массива
output << "Введите размерность n=" << n << endl;

cout << "Введите элементы массива:" << endl << endl;
output << "Введите элементы массива:" << endl << endl;
float* p = new float[n]; // объявление массива

for (i = 0; i < n; i++) // цикл
cin >> p[i]; //ввод массива

cout << "\nМинимальный элемент: " << findMin(p, n) << endl; //вывод элемента
output << "\nМинимальный элемент: " << findMin(p, n) << endl; //вывод элемента

cout << "Позиция минимального элемента: " << findMins(p, n) + 1 << endl; //вывод номера элемента
output << "Позиция минимального элемента: " << findMins(p, n) + 1 << endl; //вывод номера элемента

ibeg = findFirst(p, n);
iend = findSecond(p, n, ibeg);

for (i = ibeg + 1; i < iend; i++)sum += p[i]; //суммирование элементов
cout << "\nСумма элементов расположенных между 1 и 2 отрицательными элементами: " << sum; //вывод суммы
output << "\nСумма элементов расположенных между 1 и 2 отрицательными элементами: " << sum; //вывод суммы

cout << "\nПреобразованный массив:" << endl << endl;
output << "\nПреобразованный массив:" << endl << endl;
moduls(p, n);
for (i = 0; i < n; i++) // цикл
if (fabs(p[i]) > 1)
{
cout << p[i] << ' '; //вывод всех остальных элементов массива
output << p[i] << ' '; //вывод всех остальных элементов массива
}
return 0;
}
Представить обрабатываемый массив.
Проверить варианты: Нулевых элементов массива или имеется только один нулевой элемент.

Обсуждение

Форма ответа