Предмет: Информатика, автор: shashamoroz1998

Помогите с заданием в С++
Значения массива формируется с использованием генератора случайных чисел.
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1. количество элементов массива, меньших С;
2. сумму элементов массива, расположенных после максимального элемента.
Упорядочить элементы массива по возрастанию модулей элементов.


lozromanik: упорядочить до или после пунктов 1 и 2?
shashamoroz1998: после

Ответы

Автор ответа: lozromanik
1

Відповідь:#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;

}


shashamoroz1998: можете пожалуйста подправить код чтобы рандом чисел был по другому, а то программа devcpp выдает ошибку ( std::mt19937 gen(time(0)); ) не компилирует и пояснения
lozromanik: Странно, у меня тоже devc++,в нём же и делал, скорее всего, вам необходимо обновить компилятор, у вас какой С++? Какая версия компилятора?
lozromanik: Просто этот генератор очень хороший
lozromanik: Для вихря Мерсенна нужен С++11
shashamoroz1998: а можно сделать генератор для старого компилятора, просто такой стоит у преподавателя
Похожие вопросы