# Anfängerfehler: Nullstellenberechnung



## Rockwell (10. August 2005)

Hi, 
ich hab vor kurzem mit C angefangen und wollte ein Programm schreiben, dass von einer gegebenen Funktion f(x)=ax^2+bx+c die Nullstellen berechnen kann. Um mich einzuarbeiten, hat ich erst mal ein Programm vor zu schreiben, das das ganzzahlige X links und rechts von der ersten Nullstelle der Parabel berechnet, indem ich so lange von der y- Achse aus nach rechts gehe, bis y das Vorzeichen wechselt. Hier ist der Quellcode:


```
#include<stdio.h>
#include<conio.h>

int main()
{
    int i,y,y1,y2,y0,x1,x2,x3,x4,x0,x,a,b,c;
    
    printf("Programm zur Nullstellenbestimmung von Funktionen der Form ax^2+bx+c\n\n");
    printf("Bitte a, b und c eingeben.\n");
    printf("a=");
    scanf("%d",&a);
    printf("b=");
    scanf("%d",&b);
    printf("c=");
    scanf("%d",&c); /*Definition der Koeffizienten*/
    
    /*wenn c>0, dann f(0)>0, wenn c=0, dann f(0)=0 und wenn c<0, dann f(0)<0*/
    
    if (c>0) {
           y=c;
           x=0;
           while(y>0)
           {
                     y=(a*(x*x)+b*x+c);
                     x++;
           }
           x2=--x;
           x1=--x;
           printf("(x1|y1) => (%d|%d)\n",x1,y=(a*x1*x1+b*x1+c));
           printf("(x2|y2) => (%d|%d)\n\n\n",x2,(y=a*x2*x2+b*x2+c)); /*Annäherung an erste Nullstelle*/
           }
           
           y=c;
           x=0;
           while(y>0)
           {
                     y=(a*(x*x)+b*x+c);
                     x--;
           }
           x4=++x;
           x3=++x;
           printf("(x3|y3) => (%d|%d)\n",x3,y=(a*x3*x3+b*x3+c));
           printf("(x4|y4) => (%d|%d)\n\n\n",x4,(y=a*x4*x4+b*x4+c)); /*Annäherung an zweite Nullstelle*/          
    }
    getch();
    return 0;
}
```

Es ist nun folgendes: wenn ich die vorletzte geschweifte Klammer weglasse, dann funktioniert das Programm für c>0. MIT der vorletzten geschweiftel Klammer erhalt ich folgenden Fehler:

45 C:\Dev-Cpp\include\vari.cpp expected constructor, destructor, or type conversion before ';' token 
46 C:\Dev-Cpp\include\vari.cpp expected unqualified-id before "return" 
46 C:\Dev-Cpp\include\vari.cpp expected `,' or `;' before "return" 
47 C:\Dev-Cpp\include\vari.cpp expected declaration before '}' token 

Es wäre nett, wenn sich jemand die Fehlermeldungen anschauen könnte und mir sagen könnte, woran der Fehler liegt oder wie ich danach suche, weil ich ehrlich gesagt gar nichts mit "constructor, destructor, or type conversion" anfangen kann.

Danke im Vorraus.
CU


----------



## MCoder (10. August 2005)

Beim schnellen Überfliegen des Codes würde ich sagen, dass die geschweifte Klammer nach der Zeile "printf("(x2|y2) ..." fehl am Platz ist. 
Klammern müssen immer paarweise auftreten, d.h zu einer öffnenden gehört auch immer eine schließende Klammer. Ansonsten kommt es zu solchen Fehlermeldungen, die u.U. nicht immer gleich auf die Ursache schließen lassen.


----------



## Rockwell (10. August 2005)

Problem behoben, danke


----------

