Witam. Znalazłem na internecie pewne zadanie, o to treść:
Zadeklarować typ tablicowy typedef double tx[N][2]. Opracować funkcję, która wyznacza wartości funkcji double f(double) w przedziale [min, max] dla N punktów postaci
xi = min + i*d, gdzie d=(max-min) / (N-1) oraz i=0,1,...,N-1 (N – stała). Obliczone
elementy xi, f(xi) powinny być zapamiętane w tablicy T typu tx w sposób następujący:
T[i][0] = xi oraz T[i][1] = f(xi). Prototyp funkcji: void oblicz(double min, double max,
int n, tx T, wskaźnik_funkcji). W programie głównym wykonać obliczenia dla funkcji sin
w przedziale [-pi/2, pi/2].
Trochę zawiła jak dla mnie sama treść zadania, ale postanowiłem je zrobić i moje pytanie czy ja aby na pewno je zrozumiałem i wykonałem je dobrze? Trzymałem się treści zadania, nic nie zmieniałem. O to mój kod:
#include <iostream>
#include <clocale>
#include <cmath>
//#include <ctime>
#include <cstdlib>
using namespace std;
const int N = 20;
const double MIN = -1 * (M_PI/2);
const double MAX = M_PI/2;
const double d = (MAX - MIN) / (N-1);
typedef double tx[N][2];
double f(double);
void oblicz(double min, double max, int n, tx T, double (*f) (double) );
int main()
{
setlocale(LC_ALL,""); //set default charset
//srand(time(NULL));
tx T;
oblicz(MIN,MAX,N,T,f);
return 0;
}
void oblicz(double min, double max, int n, tx T, double (*f) (double))
{
double xi;
for(int i=0; i<N; i++)
{
xi = min + i*d;
T[i][0] = xi;
T[i][1] = f(xi);
}
for(int i=0; i<n; i++) cout << T[i][0] << " = " << T[i][1] << endl;
}
double f(double x)
{
return std::sin(x);
}
Czy ja aby od dobrej strony patrzę ?