Алгебраическая сумма

Уровень сложности:

Найти Y, если Y = X1 + X2 + … + Xn,   X = Z^3 - B + A^2 / tg^2?. Количество X вводятся пользователем программы. Для каждого X значения Z, B, А, ? разные (вводятся пользователем программы).

Очередная математическая программа, для вычисления алгебраической суммы. Но здесь есть один интересный момент — в этой программе не обойтись без использования массивов. Можете ознакомиться с динамическими массивами в С++, и вместо обычных статических массивов организуете динамические, тогда ваша программа получится ещё более универсальной. Но это, как говорится, на ваше усмотрение. Сначала попробуйте сделать так, чтоб программа просто работала, а потом можно оптимизировать код. Приблизительный результат работы программы, который у вас должен получиться:

CppStudio.com

Введите количество иксов: 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, согласно формулам, приведённым в условии задания. Смотрим результат:

CppStudio.com

Введите количество иксов: 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;
}

Вывод данной программы аналогичен предыдущему.

Следующие статьи помогут вам в решении данной задачи:
Автор: admin
Дата: 11.09.2012
Поделиться:

Комментарии

  1. Alexey Kutch

    На Си:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
    system("chcp 1251 > nul");
    int j;
    int i;
    float a, b, z, betta;
    printf("Введите количество X: ");
    scanf("%d", &j);
    float zet[j];
    float be[j];
    float aa[j];
    float tg[j];
    for(i = 0; i <= j-1; i++)
    {
    printf("Введите значения Z, B, A, Betta для Х%d:\n", i + 1);
    printf("Введите значения Z: ");
    scanf("%f", &z);
    zet[i] = z;
    printf("Введите значения B: ");
    scanf("%f", &b);
    be[i] = b;
    printf("Введите значения A: ");
    scanf("%f", &a);
    aa[i] = a;
    printf("Введите значения Betta: ");
    scanf("%f", &betta);
    tg[i] = betta;
    }
    float y;
    float summ = 0;
    for (i = 0; i < j; i++)
    {
    y = pow(zet[i], 3) - be[i] + pow(aa[i], 2)/pow(tan(tg[i]), 2);
    summ += y;
    }

     

  2. 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;
    }

  3. 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;
    }

  4. Максим Назаренко

    Не понял что такое tg^2. Понятней будет tg(Betta)^2 в условии. 
    #include <iostream>
    #include <conio.h>
    using namespace std; 
    
    int main()
    {
    	setlocale(0, ""); 
    	double Z, B, A, Betta, x, X, Y = 0;
    	cout << "Введите количество Иксов: " << endl; 
    	cin >> X; 
    	for (int i = 0; i < X; i++)
    	{
    		cout << "Введите значения Z, B, A, Betta для X" << i+1 << ": " << endl;
    		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 << "y = " << Y << endl;
    
    	_getch(); 
    	return 0;
    }
  5. sscys

    Я не могу понять, что это за Betta?

    В условии нечего не сказано…

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.