Консультация № 202241
03.03.2022, 15:14
0.00 руб.
0 2 2
Здравствуйте! Прошу помощи в следующем вопросе:
Разделить код на функции.
int main(int argc, char* argv[])
{
setlocale(LC_ALL, "Russian");
int i,n,ibeg=0,iend=0,imin; //объявление
float min=0,sum=0; //переменных
cout<<"Введите размерность n=";
cin>>n; //ввод размерности массива
cout<<"Введите элементы массива:"<<endl<<endl;
float *p=new float[n]; // объявление массива
for(i=0;i<n;i++)cin>>p[i]; //ввод массива
min=p[0]; //принимаем 1-й элемент за минимальный
for(i=0;i<n;i++) // поиск
if(p[i]<min) //минимального
{
min=p[i]; //элемента
imin=i;
}
cout<<"\nМинимальный элемент: "<<min<<endl; //вывод элемента
cout<<"Позиция минимального элемента: "<<imin+1<<endl; //вывод номера элемента
for(i=0;i<n;i++) //поиск
if(p[i]<0) //первого
{
ibeg=i; //отрицательного
break; //элемента
}
for(i=ibeg+1;i<n;i++) //поиск
if(p[i]<0) //второго
{
iend=i; //отрицательного
break; //элемента
}
for(i=ibeg+1;i<iend;i++)sum+=p[i]; //суммирование элементов
cout<<"\nСумма элементов расположенных между 1 и 2 отрицательными элементами: "<<sum; //вывод суммы
cout<<"\nПреобразованный массив:"<<endl<<endl;
for(i=0;i<n;i++) //поиск
if(fabs(p[i])<=1) //элементов
{ //модуль которого не превышает 1
cout<<p[i]<<' '; //вывод массива
}
for(i=0;i<n;i++)
if(fabs(p[i])>1)
{
cout<<p[i]<<' '; //вывод всех остальных элементов массива
}
return 0;
}

Обсуждение

давно
Старший Модератор
312929
1973
04.03.2022, 20:20
общий
это ответ
Например, так:[code lang=csharp]#include <iostream>
#include <cmath>

using namespace std;

void Input(float *a, int size)
{
for (int i=0; i<size; i++) cin >> a[i];
}

int IndexOfMin(float *a, int size)
{
int index;
float min = a[0];
for (int i=1; i<size; i++)
if (a[i]<min)
min = a[index=i];
return index;
}

int IndexOfNegative(float *a, int size)
{
for (int i=0; i<size; i++)
if (a[i]<0)
return i;
return 0;
}

float Sum(float *a, int start, int end)
{
float sum = 0;
for (int i=start+1; i<end; i++)
sum += a[i];
return sum;
}

void OutputLess(float *a, int size, float max)
{
for (int i=0; i<size; i++)
if (fabs(a[i])<max)
cout << a[i] << ' ';
}

void OutputMore(float *a, int size, float min)
{
for (int i=0; i<size; i++)
if (fabs(a[i])>min)
cout << a[i] << ' ';
}

int main(int argc, char* argv[])
{
setlocale(LC_ALL, "Russian");
int n;
cout << "Введите размерность n=";
cin >>n; // ввод размерности массива
cout << "Введите элементы массива:" << endl;
float *p=new float[n]; // объявление массива
Input(p, n); // ввод массива
int imin = IndexOfMin(p, n);
cout << "\nМинимальный элемент: " << p[imin] << endl; //вывод элемента
cout << "\nПозиция минимального элемента: " << imin+1 << endl;//вывод номера элемента
int ibeg = IndexOfNegative(p, n); // поиск первого отрицательного элемента
int iend = ibeg + IndexOfNegative(p+ibeg+1, n-ibeg-1) + 1; // поиск второго отрицательного элемента
float sum = Sum(p, ibeg, iend); // суммирование элементов
cout << "\nСумма элементов расположенных между 1 и 2 отрицательными элементами: " << sum; //вывод суммы
cout << "\nПреобразованный массив:" << endl << endl;
OutputLess(p, n, 1); // вывод поиск элементов модуль которого не превышает 1
OutputMore(p, n, 1); // вывод всех остальных элементов массива
return 0;
}[/code]
давно
Модератор
137394
1850
04.03.2022, 22:22
общий
04.03.2022, 22:24
это ответ
Еще вариант
Код:
#include <locale.h>
#include <iostream.h>
#include <conio.h>
#include <math.h>

int minel(int n, float *p, float &minmas) { // поиск минимального элемента
int i, m;
m = 0;
for(i = 0; i < n; i++) if (p[i] < p[m]) m = i; // поиск минимального элемента
minmas = p[m];
return m;
}

unsigned char minus12 (int n, float *p, int &m1, int &m2) { // поиск номеров первых двух отрицательных элементов
int i;
m1 = -1;
m2 = -1;
for(i = 0; i < n; i++) if (p[i] < 0) {
if (m1 >= 0) {m2 = i; return 1;}
m1 = i;
}
return 0;
}

float sum12(float *p, int m1, int m2) {
float sum = 0;
int i;
for(i = m1 + 1; i < m2; i++) sum += p[i];
return sum;
}

void reorg(int n, float *p, float m) { // вывод элементов массива сначала по модулю <m, потом остальных.
int i;
cout << "\nBывод элементов массива сначала по модулю <" << m <<", потом остальных" << endl;
for(i = 0; i < n; i++) if(fabs(p[i]) < m) cout << p[i] << " "; // элементы по модулю <m
for(i = 0; i < n; i++) if(fabs(p[i]) >= m) cout << p[i] << " "; // элементы по модулю >=m
}

void massin(int n, float *p) { // ввод массива
int i;
cout << "\nВведите элементы массива:" << endl;
for(i = 0; i < n; i++) cin >> p[i];
}

int main(int argc, char* argv[]) {
clrscr(); // очистка экрана
setlocale(LC_ALL, "Russian");

int n, ibeg, iend; // объявление
float minmas; // переменных

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

float *p = new float[n]; // объявление массива

massin(n, p);

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

if (minus12(n, p, ibeg, iend) == 1) { // суммирование элементов
cout << "\nСумма элементов расположенных между " << ibeg +1 << " и " << iend +1 << " элементами <0: " << sum12(p, ibeg, iend) << endl; // вывод суммы
}
else cout << "\nВ массиве два отрицательных элемента не найдено" << endl;

reorg(n, p, 1);

return 0;
}
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа