expected an expression
-
Hi Leute,
ich bin neu hier und hoffe sehr, dass ich das richtige Forum erwischt habe. Ich hatte Suchfunktion auf c++.de gesucht, um zu schauen, ob es dir Frage schon gab, hab Sie aber nicht gefunden...Fehler meinerseits, bitte ich daher unter Welpenschutz zu verbuchen.
Nun zu meinem Problem:
Wir sollen in der Uni einen Medianfilter implementieren, der Fotos "weich zeichnet".
Nun bekommen wir immer wieder eine Fehlermeldung, die wir nicht zuordnen können.
expected an expression.
Unsere recherche bei Google hat viele DInge zu Tage gebracht, aber da hat alles nicht geklappt, oder traf auf uns nicht zu.int main() { read_raw( Inp, W, H ); medianfilter(*Out, *Inp,int *a , int w,int h); quickSort(int *a, int l, int r); partition(int *a,int l,int r); write_pgm( Out, W, H );
Die Fehlermeldung ist in den Zeilen: "Mediafilter[...]","quickSort[...]" und "partition [...]"
Um nicht den gesammten code zu posten, packich mal nur den Rest von Medianfilter dazu.
void medianfilter( uint8_t *Out, uint8_t *Inp,int a[], int w, int h) { int x, y; // berechne Out aus Inp for( y=1; y<h-1; y++ ) // ohne randbehandlung { for( x=1; x<w-1; x++) // ohne randbehandlung { // 3*3 u,gebung von inp Pixel laden int x00= *(Inp + W*(y-1) + x-1); int x01= *(Inp + W*(y-1) + x); int x02= *(Inp + W*(y-1) + x+1); int x10= *(Inp + W*(y) + x-1); int x11= *(Inp + W*(y) + x); int x12= *(Inp + W*(y) + x+1); int x20= *(Inp + W*(y+1) + x-1); int x21= *(Inp + W*(y+1) + x); int x22= *(Inp + W*(y+1) + x+1); //int array[9]; a[0] = x00; a[1] = x01; a[2] = x02; a[3] = x10; a[4] = x11; a[5] = x12; a[6] = x20; a[7] = x21; a[8] = x22; Out[W*y + x] = x11; } } } return 0; }
Zur Erklärung, hier sollen die Variablen x00-x22 eingelesen werden und der Median dann nach x11 geschrieben werden.
Könnte mir bitte jemand erklären, warum wir dort diese Fehler Meldung bekommen könnten?
Sollten euch noch codesequenzen fehlen, reiche ich die natürlich so schnell wie möglich nach.Ich bedanke mich schon mal für eure Mühen,
liebe Grüße
Kasper
-
Die Zeilen in main sehen nicht nach einem Funktionsaufruf aus,
sondern nach einer Deklaration.
-
Hi Dirk,
vielen Dank für deine Antwort.
Meinst du das wegen dem Rückgabewert in Klammern?
Wenn wir die Klammern leer lassen, bekommen wir den error: "to few arguments in function"oder habe ich dich falsch verstanden?
-
An der Uni, und nicht wissen, wie man eine Funktion aufruft?
Du mußt die Funktionen mit passenden Parametern aufrufen, d.h. entweder mit konstanten Werten oder aber Variablen (die du vorher passend deklariert haben mußt).
Auf jeden Fall müssen beim Funktionsaufruf die Parametertypen (z.B. 'int') weg.
-
Ich war am ersten Tag an der Uni nicht da, als sie die Eimer mit dem Programierwissen verteilt haben
Aber da hast du natürlich recht!
Das hatten wir nach dem ersten post von mir auch schon ausprobiert, in dem wir globale int Hilfsvariablen benannt haben. Dann kam die Fehlermeldung:
too few arguments in function call to "medianfilter"
-
Wir haben es hinbekommen!
Wir hatten Parameter in einer anderen Reeihenfolge deklariert, als benutzt und da hat das Programm sich dran gestört!Vielen Dank für eure Hilfe
-
EDIT: Beitrag verwechselt.