Y
, если Y = X1 + X2 + … + Xn
, X = Z^3 - B + A^2 / tg^2?
. Количество X
вводятся пользователем программы. Для каждого X
значения Z, B, А, ?
разные (вводятся пользователем программы).Очередная математическая программа, для вычисления алгебраической суммы. Но здесь есть один интересный момент — в этой программе не обойтись без использования массивов. Можете ознакомиться с динамическими массивами в С++, и вместо обычных статических массивов организуете динамические, тогда ваша программа получится ещё более универсальной. Но это, как говорится, на ваше усмотрение. Сначала попробуйте сделать так, чтоб программа просто работала, а потом можно оптимизировать код. Приблизительный результат работы программы, который у вас должен получиться:
Введите количество иксов: 3
Введите значения Z, B, A, Betta для X1:
Z = 2.3
B = 45.1
A = 12.9
Betta = 3.67
Введите значения Z, B, A, Betta для X2:
Z = 3.3
B = 12.12
A = 7
Betta = 8
Введите значения Z, B, A, Betta для X3:
Z = 4
B = 3
A = 1.14
Betta = 2
y = 541.51
// algebraic_sum.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> using namespace std; int main(int argc, char* argv[]) { setlocale(LC_ALL, "rus"); cout << "Введите количество иксов: "; int number_x = 0; // количество иксов cin >> number_x; float *arrayPtrZ = new float [number_x]; // динамический массив для значений Z float *arrayPtrB = new float [number_x]; // динамический массив для значений B float *arrayPtrA = new float [number_x]; // динамический массив для значений A float *arrayPtrBe = new float [number_x]; // динамический массив для значений Betta // инициализируем динамические массивы, введёнными с клавиатуры значениями for (int counter = 0; counter < number_x; counter++) { cout << "Введите значения Z, B, A, Betta для X" << (counter+1) << ":\n"; cout << "Z = "; cin >> arrayPtrZ[counter]; cout << "B = "; cin >> arrayPtrB[counter]; cout << "A = "; cin >> arrayPtrA[counter]; cout << "Betta = "; cin >> arrayPtrBe[counter]; } float x = 0, y = 0; for (int counter = 0; counter < number_x; counter++) { x = pow(arrayPtrZ[counter], 3) - arrayPtrB[counter] + pow(arrayPtrA[counter], 2) / pow(tan(arrayPtrBe[counter]),2); // формула нахождения икса y += x; // суммируем иксы } delete arrayPtrZ; delete arrayPtrB; delete arrayPtrA; delete arrayPtrBe; // высвобождаем память cout << "\ny = " << y << endl; // ответ system("pause"); return 0; }
Для хранения значений Z, B, А, ?
созданы динамические массивы, строки 13-16. После чего, в строках 18 -29 заполняем массивы элементами Z, B, А, ?
, через клавиатуру. Во втором цикле for
, строки 31 — 35 вычисляем х
и y
, согласно формулам, приведённым в условии задания. Смотрим результат:
Введите количество иксов: 3
Введите значения Z, B, A, Betta для X1:
Z = 2.3
B = 45.1
A = 12.9
Betta = 3.67
Введите значения Z, B, A, Betta для X2:
Z = 3.3
B = 12.12
A = 7
Betta = 8
Введите значения Z, B, A, Betta для X3:
Z = 4
B = 3
A = 1.14
Betta = 2
y = 541.51
Другое решение этой задачи нам прислал пользователь нашего сайта Алексей, причем в коде не использовались массивы. Смысл в том, что сразу после ввода нужных значений, они сразу суммируются. Комментировать бессмысленно, смотрите код:
#include <iostream> #include #include using namespace std; int main() { setlocale(LC_ALL, "RUS"); float z, b, a, betta, x, y = 0; int j; cout << "Введите количество иксов: "; cin >> j; for(int i = 1; i <= j; i++) { cout << "Введите значения Z, B, A, Betta для X" << i << ":\n"; cout << "Z = "; cin >> z; cout << "B = "; cin >> b; cout << "A = "; cin >> a; cout << "Betta = "; cin >> betta; x = pow(z, 3) - b + pow(a, 2) / pow(tan(betta), 2); y += x; } cout << "\ny = " << y << endl; cin.get(); return 0; }
Вывод данной программы аналогичен предыдущему.
Комментарии
Alexey Kutch
На Си:
QtUser
#include <iostream>
#include <locale>
#include «math.h»
using namespace std;
int main()
{
setlocale(LC_ALL,»rus»);
int a;
cout << «Введите кол-во иксов: «;
cin >> a;
int i;
float c;
float y=0;
float x[a][4];
for (i=0; i<a; i++)
{
cout << «Введите значения Z, B, A, Betta для Х» << i+1<<«:»<<endl;
cout << «Z = «;
cin >> x[i][0];
cout << «B = «;
cin >> x[i][1];
cout << «A = «;
cin >> x[i][2];
cout << «Betta = «;
cin >> x[i][3];
}
for (i=0; i<a; i++)
{
c = x[i][0]*x[i][0]*x[i][0] — x[i][1] + x[i][2]*x[i][2]/(tan(x[i][3])*tan(x[i][3]));
y = y + c;
}
cout << «Y = » << y;
return 0;
}
Abai Shapagatin
#include <iostream>
#include<math.h>
using namespace std;
double funX(double x1,double z1,double b1,double a1,double betta1){
x1=z1*z1*z1-b1+((a1*a1)/pow(tan(betta1),2));
return x1;
}
int main()
{
int xnum;
double b, a, z, betta;
double x=0;
double y=0;
cout<<«Enter X number\n»;
cin>>xnum;
double *arrX=new double[xnum];//динамический массив для хранения вычислений Х
for(int i=0;i<xnum;i++){
cout<<«Enter parameters z,b,a, betta for X»<<(i+1)<<«:\n»;
cin>>z>>b>>a>>betta;
arrX[i]=funX(x,z,b,a,betta);
y+=arrX[i];
}
cout<<endl;
cout<<«y: «<<y;
return 0;
}
Максим Назаренко
sscys
Я не могу понять, что это за Betta?
В условии нечего не сказано…