Консультация № 137679
20.05.2008, 23:50
0.00 руб.
0 1 1
Сдраствуйте товарищи эксперты. Помогите пожалуйста с программой!
Условие:
Выполнить задание
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1)сумму отрицательных элементов массива;
2)произведение элементов массива, расположенных между максимальным и минимальным элементами.
Упорядочить элементы массива по возрастанию.
, оформив каждый пункт задания в виде функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
Текст программы в приложении.

Приложение:
#include <iostream>#include <fstream>#include <vector>#include <string>#include <iomanip>#include <algorithm>using namespace std;#define N 7int main(){ double sum=0, pr=1; double min,max; double mas[N]; double tmp; int mi, ni; int i; for(i=0; i<N; ++i) { mas[i]=(double) (rand()%30)/4 - 3; cout<<setprecision(3)<<mas[i]<<" "; } min = max = mas[0]; for(i=0; i<N; ++i) { if(mas[i]<=min) {min=mas[i]; mi=i;} if(mas[i]>=max) {max=mas[i]; ni=i;} if(mas[i]<0) sum+=mas[i]; } cout<<"symma = "<<sum; if(mi>ni) { tmp = ni; ni = mi; mi = tmp; } for(i=mi; i<=ni; ++i) pr *=mas[i]; cout<<endl<<"min = "<<min<<" max = "<<max<<" pr = "<<pr<<endl; for(i=0; i<N-1; ++i) for(int j=0; j<N-1; ++j) if(mas[j]>mas[j+1]) { tmp=mas[j]; mas[j]=mas[j+1]; mas[j+1]=tmp; } for(i=0; i<N; ++i) { cout<<setprecision(3)<<mas[i]<<" "; } cout<<endl; system("pause"); return 0;}

Обсуждение

Неизвестный
21.05.2008, 18:56
общий
это ответ
Здравствуйте, Константин Шипилов!

Вот функции реализующие необходимые действия, функцию сортировки при необходимости можно улучшить.

//функция суммирования отрицательных элементов массива;
// rasmer - размер массива
double SummNegative(double mass[], int rasmer){
double sum=0;
for(int i=0; i<rasmer; i++){
if(mass[i]<0) sum+=mass[i];
}
return sum;
}

//функция нахождения индекса максимума на интервале от min до max (служебная)
int Max((double mass[], int max, int min){
int k=min;
double X=mass[min];
for(int i=min; i<max; i++){
if(X<mass[i+1]) {
k=i+1;
X=mass[i+1];
}
}
return k;
}

//функция нахождения индекса минимума на интервале от min до max (служебная)
int Min((double mass[], int max, int min){
int k=min;
double X=mass[min];
for(int i=min; i<max; i++){
if(X>mass[i+1]) {
k=i+1;
X=mass[i+1];
}
}
return k;
}

//функция нахождения произведения элементов массива,
//расположенных между максимальным и минимальным элементами
// rasmer - размер массива
double Product(double mass[], int rasmer){
int L=Min(mass[], rasmer, 0);
int M=Max(mass[], rasmer, 0);

if(L<M){double Res=1
for(int i=L; i<=M; i++){
Res*=mass[i];
}
}
if(L>M){double Res=1
for(int i=M; i<=L; i++){
Res*=mass[i];
}
}
if(L==M){
cout <<"No different number in mass"
Res=mass[L];
}
return Res;
}

//функция сортировки
// rasmer - размер массива
void Sort(double mass[], int rasmer){
for(int i=0; i<rasmer; i++){
int min=Min(mass[], rasmer, i);
double tmp=mass[i];
mass[i]=mass[min];
mass[min]=tmp;
}
}
Форма ответа