1 Востаннє редагувалося Ростислав (31.01.2016 11:41:03)

Тема: Допоможіть зробити задачу по c++

Допоможіть

Post's attachments

Безымянный.jpg 69.27 kb, 216 downloads since 2016-01-31 

2

Re: Допоможіть зробити задачу по c++

Який бюджет проекту?

3

Re: Допоможіть зробити задачу по c++

Вам ніхто не допоможе, навіть якщо захоче. Як ви думаєте, чому?

Подякували: leofun011

4

Re: Допоможіть зробити задачу по c++

а шо таке fi?

Подякували: Yola, leofun012

5

Re: Допоможіть зробити задачу по c++

FakiNyan написав:

а шо таке fi?

Там формула fabs(cos(x) / 2.7) + (9.1*sin((1.2*x) + 1))

6 Востаннє редагувалося Ярослав (23.05.2016 19:10:02)

Re: Допоможіть зробити задачу по c++

Ненадійна програмка, але працює.

/* 
 * File:   main.cpp
 * Author: Yaroslav
 *
 * Created on 23 травня 2016, 18:30
 */

// f = abs(cos(x) / 2.7) + (9.1*sin((1.2*x) + 1))

#include <iostream>
#include <cmath>
#include <cstdlib>

#define RAND_MIN_MY 0
#define RAND_MAX_MY 1
#define PRECISION 0.001

using namespace std;

int factorial(int);
double my_function(int);
double my_random(void);

/*
 * Calculation series members
 */
int main(int argc, char** argv) {
    double a = 0.0; // result
    double f = 0.0; // result from the function
    double x = 0.0; // random number in range, given by user
    double previous_result = 0.0;
    int k = 0;      // counter
    
    x = my_random(); // calculating random number for x
    
    k = 0; // first iteration
    previous_result = pow(-1, k) * (my_function(k) * pow(x, (double) k)) / (double) factorial(k);
    cout << "current_result: " << previous_result << endl;
    // second and later iterations
    for (k = 1; true; k++) { // this loop will never end
        // calculating nest series element
        a = pow(-1, k) * 
                (my_function(k) * pow(x, (double) k)) / (double) factorial(k);
        
        cout << "current_result: " << a << endl;
        // check whether we have reached the given accuracy
        if (abs(previous_result - a) <= PRECISION) {
            break;
        }
        // saving current result for next step
        previous_result = a;
    }
    
    cout << "Number of steps: " << k+1 << endl;
    cout << "Result: " << a << endl; 

    return 0;
}

// generating random number
double my_random(void)  {
    double variable = 0.0; // result
    int lower_bound = 0, upper_bound = 0; // bounds for random number
    int random = 0; // this variable used for carrying result of the rand()
    double i = 0; // counter
    
    // Step 1: aquiring user data
    lower_bound = RAND_MIN_MY;
    upper_bound = RAND_MAX_MY;
    
    // Step 2: adding zeroes to upper_bound value
    // This is needed to generate int number with given precision
    for (i = PRECISION; i < 1.0; i *= 10) {
        upper_bound *= 10;
    }
    // Step 3: generate int random number
    random = rand() % (upper_bound + 1) + lower_bound;
    // Step 4: converting int number into double
    variable = (double) random;
    for (i = PRECISION; i < 1.0; i *= 10) {
        variable /= 10;
    }
    
    // Step 5: returning result
    return variable;
}

// custom function
double my_function(int x) {
    double variable;
    
    variable = abs(cos(x) / 2.7) + (9.1 * sin((1,2 * x) + 1));
    
    return variable;
}

// recursive factorial calculation
int factorial(int number) {
    int temp;

    if(number <= 1) return 1;

    temp = number * factorial(number - 1);
    return temp;
}