Надо представить в виде функции , помогите плиз(
1) количество отрицательных элементов массива;
2) сумму модулей элементов массива, расположенных после минимального по модулю элемента.
Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.
это правильно?
Код:
#include <iostream>
#include <cmath>
#include <stdlib.h>
using namespace std;
int otr(double *m,int ke){
// Подсчет количества отрицательных элементов
int koe=0;
for (int i=0; i<ke; i++)
if (m[i]<0)
koe++;
return koe ;
}
double ss(double *m,int ke){
// Подсчет суммы элементов после минимального по модулю
int n_min=0; double summa=0;
for (int i=1; i<ke; i++)
if (fabs(m[i])<fabs(m[0]))
n_min=i;
if (n_min==ke-1)
cout<<"Минимальный по модулю элемент последний.\n";
else
{
for (int i=(n_min+1); i<ke; i++)
summa+=fabs(m[i]);
}
return summa;
}
void zz(double *m,int ke){
// Замена отрицательных элементов их квадратами
for (int i=0; i<ke; i++)
if (m[i]<0)
m[i]=m[i]*m[i];
}
void sor(double *m,int ke){
// Упорядочивание массива по возрастанию
double k;
for (int i=0; i<(ke-1); i++)
{
for (int j=i+1; j<ke; j++)
{ if (m[i] > m[j])
{
k=m[i];
m[i]=m[j];
m[j]=k;
}
}
}
}
int main()
{
setlocale (LC_ALL, "Russian");
double m [100];
int ke, koe = 0, n_min=0, min, summa=0,i;
cout <<"Введите размер массива: ";
cin >> ke;
cout<<endl;
for (int i = 0; i < ke; i++)
{
cout << " m [" << i << "] = ";
cin >> m [i];
cout<<endl;
}
cout<<"Количество отрицательных элементов массива = "<<otr(m,ke)<<".\n";
cout<<"Сумма модулей элементов после минимального по модулю = "<<ss(m,ke)<<".\n";
zz(m,ke);
sor(m,ke);
cout<<"Отсортированный массив:\n";
for (int i=0; i<ke; i++)
cout << m[i] << ' ';
cout<<endl;
system ("pause");
return 0;
}
#include <cmath>
#include <stdlib.h>
using namespace std;
int otr(double *m,int ke){
// Подсчет количества отрицательных элементов
int koe=0;
for (int i=0; i<ke; i++)
if (m[i]<0)
koe++;
return koe ;
}
double ss(double *m,int ke){
// Подсчет суммы элементов после минимального по модулю
int n_min=0; double summa=0;
for (int i=1; i<ke; i++)
if (fabs(m[i])<fabs(m[0]))
n_min=i;
if (n_min==ke-1)
cout<<"Минимальный по модулю элемент последний.\n";
else
{
for (int i=(n_min+1); i<ke; i++)
summa+=fabs(m[i]);
}
return summa;
}
void zz(double *m,int ke){
// Замена отрицательных элементов их квадратами
for (int i=0; i<ke; i++)
if (m[i]<0)
m[i]=m[i]*m[i];
}
void sor(double *m,int ke){
// Упорядочивание массива по возрастанию
double k;
for (int i=0; i<(ke-1); i++)
{
for (int j=i+1; j<ke; j++)
{ if (m[i] > m[j])
{
k=m[i];
m[i]=m[j];
m[j]=k;
}
}
}
}
int main()
{
setlocale (LC_ALL, "Russian");
double m [100];
int ke, koe = 0, n_min=0, min, summa=0,i;
cout <<"Введите размер массива: ";
cin >> ke;
cout<<endl;
for (int i = 0; i < ke; i++)
{
cout << " m [" << i << "] = ";
cin >> m [i];
cout<<endl;
}
cout<<"Количество отрицательных элементов массива = "<<otr(m,ke)<<".\n";
cout<<"Сумма модулей элементов после минимального по модулю = "<<ss(m,ke)<<".\n";
zz(m,ke);
sor(m,ke);
cout<<"Отсортированный массив:\n";
for (int i=0; i<ke; i++)
cout << m[i] << ' ';
cout<<endl;
system ("pause");
return 0;
}
Код:
void handle(double * a, int n, int& negCount, double& minSum)
{
double minabs = fabs(a[0])+1; // Принимаем первый элемент минимальным по модулю
for(int i = 0; i < n; ++i)
{
double aabs = a[i];
if (aabs < 0)
{
aabs = -aabs;
++negCount;
a[i] = aabs*aabs;
}
if (aabs < minabs)
{
minabs = aabs;
minSum = 0.0; // Сброс суммы
}
else
{
minSum += aabs;
}
}
}
{
double minabs = fabs(a[0])+1; // Принимаем первый элемент минимальным по модулю
for(int i = 0; i < n; ++i)
{
double aabs = a[i];
if (aabs < 0)
{
aabs = -aabs;
++negCount;
a[i] = aabs*aabs;
}
if (aabs < minabs)
{
minabs = aabs;
minSum = 0.0; // Сброс суммы
}
else
{
minSum += aabs;
}
}
}