Cześć.
Czy możecie mi powiedzieć o co autorowi chodziło w tym zadaniu? :)
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:
```c
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].
O co pyta podmiot liryczny? :)
Zadanie to jest ćwiczeniem ze wskaźników do funkcji, które same w sobie są bardzo proste. Popełniłem coś takiego:
#include <stdio.h>
#include <math.h>
// Użyłem makra gdyż dla zwykłej stałej w postaci const int N=20; kompilator wyrzuca błąd.
#define N 20
// Zmienna jest globalna żeby funkcja oblicz znała typ 'tx'.
typedef double tx[N][2];
double oblicz(double min, double max, int n, tx T, double (*wsk)(double)){
int i;
double xi,d=max-min;
for(i=0;i<n;i++){
xi=(min+i*d)/(n-1);
T[i][0]=xi;
T[i][1]=wsk(xi);
}
return 0;
}
int main(void){
tx tab;
oblicz(-3.14/2,3.14/2,N,tab,sin);
int i;
for(i=0;i<N;i++){
if(i%2) printf("\t");
else printf("\n");
printf("[%3.2lf][%3.2lf] ",tab[i][0],tab[i][1]);
}
printf("\n");
}
Pozdrawiam
Grzesiek