Помогите с заданием в С++
Значения массива формируется с использованием генератора случайных чисел.
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1. количество элементов массива, меньших С;
2. сумму элементов массива, расположенных после максимального элемента.
Упорядочить элементы массива по возрастанию модулей элементов.
Answers & Comments
Відповідь:#include<iostream>
#include<random>
#include<cmath>
#include<string>
#include<ctime>
void sort(float mas[],float t){
int n=0;
for(int j=0;j<(int)t;j++){
for(int i=0;i<((int)t)-1-n;i++){
if(abs(mas[i])>abs(mas[i+1])){
float temp = mas[i+1];
mas[i+1] = mas[i];
mas[i]=temp;
}
}n++;}
}
void enter(std::string phrase[],float numberOfPhrase[]){
for(short i=0;i<4;i++){
std::cout<<phrase[i]<<std::endl;
std::cin>>numberOfPhrase[i];}
};
int main(){
int count = 0,max=0;
setlocale(0,"");
std::string phrases[4] = {"Введите количество элементов массива:",
"Введите минимальный предел:",
"Введите максимальный предел:",
"Введите число для сравнения с элементами массива:"};
float number_of_var[4];
double sum=0;
enter(phrases,number_of_var);
float* numbers = new float[static_cast<int>(number_of_var[0])];
std::mt19937 gen(time(0));
std::uniform_real_distribution<> uid(number_of_var[1],number_of_var[2]);
for(int i=0;i<number_of_var[0];i++){
numbers[i] = uid(gen);
std::cout<<"["<<i<<"] = "<<numbers[i]<<std::endl;
if(numbers[i]<number_of_var[3]) count++;
if(numbers[max] == numbers[i]) continue;
else if(numbers[max]<numbers[i]) max=i;
}
for(int i = max+1;i<(int)number_of_var[0];i++){
sum+=numbers[i];
}
std::cout<<"Чисел, меньших за "<<number_of_var[3]<<" - "<<count<<" чис-ел/-ло/-ла"<<std::endl;
std::cout<<"Максимальное число массива = "<<numbers[max]<<". Сумма чисел после него = "<<sum<<std::endl;
sort(numbers,number_of_var[0]);
std::cout<<"Отсортированный масив:"<<std::endl;
for(int i=0;i<(int)number_of_var[0];i++){
std::cout<<"["<<i<<"] = "<<numbers[i]<<std::endl;
}
delete[]numbers;
return 0;
}