Witam, piszę program w C na Linux/Unix - (a dokładniej w PuTTY na serwerze uczelni - nie wiem czy ma to znaczenie ), który całkuje numerycznie metoda trapezów.
Mam trzy pliki :
EDIT: Zapomniałem napisać że test.c i calnum.h były już gotowe napisane. Moim zadaniem było napisać tylko plik calnum.c
Główny: test.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "calnum.h"
double f( double x )
{
return x*sin(x);
}
int main( int argc, char **argv)
{
double a = argc > 1 ? atof(argv[1]) : 0;
double b = argc > 2 ? atof(argv[2]) : M_PI;
int n = argc > 3 ? atoi(argv[3]) : 1000;
double (*func) (double) = f; // to dodałem od siebie - ale nie pomoglo :)
printf( "Int <%g,%g>[%i] (x*sin(x) ) = %g\n", a, b, n, calnum(func, a, b, n));
return 0;
}
Plik nagłowkowy calnum.h
#ifndef calnum_h
#define calnum_h
double calnum ( double (*f)(double), double a, double b, int n );
#endif // calnum_h
Plik źródłowy calnum.c:
#include "calnum.h"
double calnum (double (*f) (double), double a, double b, int n)
{
double suma = 0;
double i;
double d = (b - a) / n;
for(i = 0; i < n; i++)
{
suma += (f(a + i*d) + f(a + (i+1)*d)) /2 * d;
}
return suma;
}
Gdy chcę skompliować test.c: cc -Wall test.c -lm dostaje taki błąd:
In function `main' :
test.c: (text+0xbb) : undefinied reference to `calnum'
collect2: ld returned 1 exit status
Wszystkie pliki mam w jednym folderze. Znalazłem podobny temat: https://forum.pasja-informatyki.pl/63474/wlasny-plik-naglowkowy-code-blocks-undefined-reference-to jednak dotyczyl Code::Blocks. Możliwe że skopałem coś gdzieś w kodzie. Z góry dzięki :)