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

Разработать программу на языке С++.
Cоздать 3 одномерных статических массива Х1, Х2, Х3 размерностями N1, N2, N3 (где N константа, определяемая в программе программистом). Заполнить каждый массив Х1, Х2, Х3 случайными числами в диапазоне [D1_min, D1_max], [D2_min, D2_max], [D3_min, D3_max] соответственно.
Создать еще 3 одномерных массива Y1, Y2, Y3 размерностями N1, N2, N3, каждый элемент массивов Y вычисляется в соответствии с зависимостью (см. номер варианта). Например Y1[i]=f(X1[i], k), k- количество элементов многочлена из варианта.
Вывести на экран значения всех массивов.
Заполнение массивов Х1, Х2, Х3 случайными числами, вывод элементов массива на экран, вычисление значения функции f(X1[i], k), а также заполнение массивов Y1, Y2, Y3 реализовать в собственных функциях.

Приложения:

Ответы

Автор ответа: duplerlvl85
0
#include <iostream>
#include <cmath>
#include <time.h>
using namespace std;
float LogFunction(int x,int k,int a);
long double fact(int N);
void main()
{
setlocale(0, "");
srand(time(NULL));

int a,n1, n2, n3, d1, d2, d3, d1max, d2max, d3max, k;

cout << "Введите размерность массива n1 n2 n3 и а" << endl;

cin >> n1 >> n2 >> n3>>a;

int* x1 = new int[n1];

int* x2 = new int[n2];

int* x3 = new int[n3];

float* y1 = new float[n1];

float* y2 = new float[n2];

float* y3 = new float[n3];

cout << "Введите диапазоны чисел в массиве в такой последовательности: d1min, d1max, d2min, d2max, d3min, d3max" << endl;
cin >> d1 >> d1max >> d2 >> d2max>> d3 >> d3max;
for (int i = 0;i < n1;++i)

{
x1[i] = d1 + rand() % (d1max - (d1-1));  //заполняем массив рандомными числами
}
for (int i = 0;i < n2;++i)
{
x2[i] = d2 + rand() % (d2max - (d2-1));
}

for (int i = 0;i < n3;++i)

{
x3[i] = d3 + rand() % (d3max - (d3-1));
}
cout << "Введите k " << endl;
cin >> k;

for (int i = 0;i < n1;++i)

y1[i] = LogFunction(x1[i], k , a);
   // через отдельную функцию считаем значения массива y1
for (int i = 0;i < n2;++i)

y2[i] = LogFunction(x2[i], k , a);

for (int i = 0;i < n3;++i)
y3[i] = LogFunction(x3[i], k , a);
for (int i = 0;i < n1;++i)
cout << " " << x1[i];

cout << endl;
for (int i = 0;i < n2;++i)
cout << " " << x2[i];

cout << endl;

for (int i = 0;i < n3;++i)

cout << " " << x3[i];

cout << endl;

for (int i = 0;i < n1;++i)

cout << " " << y1[i];
cout << endl;
for (int i = 0;i < n2;++i)
cout << " " << y2[i];
cout << endl;

for (int i = 0;i < n3;++i)

cout << " " << y3[i];

cout << endl;

system("pause");
}
float LogFunction(int x, int k,int a)  
{
float result=0;
for (int i = 1;i <= k;++i) 

{
result += ((pow(log(a),i)) / fact(i))*(pow(x, i + 1) + i);   //Формула которая на картинке
}

return result;
}
long double fact(int N)  //считаем факториал , который в знаменателе на картинке.
{
if (N < 0)  return 0; 
if (N == 0) 
return 1;
else
return N * fact(N - 1);    //Рекурсия
}

P.s не забудь отметить ответ лучшим, если он таков
Автор ответа: Ha3gyl
0
Даже не сомневайся.
Похожие вопросы
Предмет: Математика, автор: Аноним