포인터 함수 만드는데 넘 어렵네요...

la.miel94의 이미지

오류
homework5-3_template.c:11:37: error: parameter ‘a’ has just a forward declaration
homework5-3_template.c:11:24: error: parameter ‘pf’ has just a forward declaration
homework5-3_template.c: In function ‘main’:
homework5-3_template.c:48:2: error: incompatible type for argument 1 of ‘get_root’
homework5-3_template.c:11:8: note: expected ‘double’ but argument is of type ‘double (*)(double)’
homework5-3_template.c:48:2: error: too many arguments to function ‘get_root’
homework5-3_template.c:11:8: note: declared here
homework5-3_template.c: At top level:
homework5-3_template.c:52:37: error: parameter ‘a’ has just a forward declaration
homework5-3_template.c:52:24: error: parameter ‘pf’ has just a forward declaration
homework5-3_template.c: In function ‘get_root’:
homework5-3_template.c:58:7: error: ‘pf’ undeclared (first use in this function)
homework5-3_template.c:58:7: note: each undeclared identifier is reported only once for each function it appears in
homework5-3_template.c:58:11: error: ‘a’ undeclared (first use in this function)

#include
#include
#define ESP 0.001
#define F1(x) (x)*(x)*(x) + (x)*(x) + (x) + 7
#define F2(x) (x)*(x)*(x) + (x)*(x) + (x) - 8
#define F3(x) 3*(x)*(x)*(x) - (x)*(x) - 50*(x)
#define F4(x) 100*(x) +100
#define F5(x) -1*(x)*(x)*(x) - 70*(x)*(x) -5*(x) + 10

//parameter : function pointer, double v1, double v2
double get_root(double pf[]; double a; double b);
double func1(double x){
return F1(x);
}
double func2(double x){
return F2(x);
}
double func3(double x){
return F3(x);
}
double func4(double x){
return F4(x);
}
double func5(double x){
return F5(x);
}
double (*eq[5]) (double x) = {func1, func2, func3, func4, func5};

void main()
{
double a,b;
double r;
int se;
printf("\nselect equation(0~4): ");
scanf("%d", &se);
if(se > 4 || se < 0){
printf("bad input\n");
return;
}

printf("\nEnter the value of x0: ");
scanf("%lf",&a);

printf("\nEnter the value of x1: ");
scanf("%lf",&b);
printf("\n a b m f(a) f(b) f(m)");

r = get_root(eq[se], a, b);
printf("\nroot = %f\n", r);
}

double get_root(double pf[]; double a; double b)
{
float m;
int i = 1;
double fa,fb,fm,t;

fm=(*pf)(a);
for(;i>0;i++){
m=(a+b)/2;
fa = (*pf)(a); fb = (*pf)(b); fm = (*pf)(m);
printf("\n%2d. %f %f %f %lf %lf %lf", i, a,b,m,fa,fb,fm);
if (fm<0) a=m;
else if (fm<0.0005&&fm>-0.0005) i=0;
else b=m;
}
return m;
//FILL

la.miel94의 이미지

아 죄송해요 이상한 착각을 했네요

dltkddyd의 이미지

double get_root(double pf[]; double a; double b);

선언부에서

double get_root(double pf[], doublea, double b);

이렇게 선언하시고요.
호출부에서도 콜론을 콤마로 고치세요.

제가 찾은 오류 중에 하나고요. 또 다른 오류는 찾아보세요. 오류 행하고 메시지 잘 보세요.

본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.