Всем добрый день.
Задание которое я делал: Сoстaвить прoграмму вывода на экран таблицы значений функции y(x) для x,изменяющегося от a= 0,1 до b=1,2 с шагом h=0,1. Вычисление y(x) оформить в виде функции.Предусмотреть передачу параметров в функцию разными способами.
К сожалению я пока самостоятельно не могу с "нуля" сделать такое(не хватает знаний), поэтому взял пример и переделал под своё задание, скажите пожалуйста правильно ли я переделал или что сделал не так.
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <math.h>
double Summa(double, int);
void Summa(double*, int*, double*);
void Summa(double&, int&, double&);
using namespace std;
int main()
{
double s, x, a, b, h;
int k;
cout << "Vvedite a,b,h,k" << endl;
cin >> a >> b >> h >> k;// тут ввожу 0.1 1.2 0.1 20
//Вывод заголовка
cout << "\n Value" << setw(20) << "Pointer" << setw(24) << "Reference \n";
x = a;
do
{ //Вывоод таблицы
cout << setw(5) << x << setw(10) << Summa(x, k);
Summa(&x, &k, &s);
cout << setw(10) << x << setw(10) << s;
Summa(x, k, s);
cout << setw(10) << x << setw(10) << s << endl;
x+=h;
} while (x <= b+h/2);
cout<<endl;
return 0;
}
double Summa(double x, int k)
{
double s;
const double PI = 3.14159265;
int i;
s = 2;
for (i = 1; i <=k; i++)
s += cos(i*PI/4)/pow(i,2)*pow(x,i);
return s;
}
void Summa(double *x, int *k, double *s)
{
int i;
const double PI = 3.14159265;
*s = 2;
for (i = 1; i <= *k; i++)
*s += cos(i*PI / 4) / pow(i, 2)*pow(*x, i);
}
void Summa(double &x, int &k, double &s)
{
int i;
const double PI = 3.14159265;
s = 2;
for ( i = 1; i <=k; i++)
s += cos(i*PI / 4) / pow(i, 2)*pow(x, i);
}
Вообще-то, не совсем правильно. Подставьте x == 0
- что у вас получается? 2. А должно? 0. Вы зачем-то инициализируете сумму значением 2.
Так что замените ваше
s = 2;
на
s = 0;
и все будет нормально. И еще - я бы не использовал функции - ни cos
, ни pow
- они тут не очень-то нужны. Пример, как от них избавиться (и ваш исправленный код) см. тут - https://ideone.com/hZFCct
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
При заходе в if (int(cstr[i]) >= 88) происходит замена последовательностью буквВ чем ошибка?