Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Error: syntax error before `return' (http://www.go4expert.com/forums/error-syntax-error-return-t18171/)

 theevilmachines 24Jun2009 22:26

Error: syntax error before `return'

I know this is annoying, but I really cannot find the error in my code. I get an error message that says: SMOalg.cxx:104: syntax error before `return'. Here is my code. Any help would be greatly appreciated. Thanks!

Code:

```#include<iostream> using namespace std; double M[3][3] =  {    {-2.5, 2, -1},                         {1,3,-1},                         {1,-1,1}                   }; double L; double H; int C = 1; double tol = 1e-5; int max_passes = 10; double alpha[3] = {0,0,0}; double b = 0; int passes = 0; int num_changed_alphas; double E[3]; double sum; int k; double oldalpha[3]; double eta; double Max(double N1, double N2) {         double Maximum = N1;         if( Maximum < N2 ){                 Maximum = N2;}         return Maximum; } double Min(double N1, double N2) {         double Minimum = N1;         if( Minimum > N2 ){                 Minimum = N2;}         return Minimum; } double innerproduct(int index1, int index2){         double out = M[index1][1]*M[index2][1] + M[index1][2]*M[index2][2];         return out; } int main(){         while (passes < max_passes){                 num_changed_alphas = 0;                 for (int i=1; i <= 3; i++){                         for (int j=1; j <= 3; j++){                                 sum += alpha[j]*M[j][3]*innerproduct(j,i);}                         E[i] = sum + b - M[i][3];                         sum = 0;                         if ((M[i][3]*E[i]<-tol && alpha[i]<C) || (M[i][3]*E[i]>tol && alpha[i]>0)){                                 if (i==3) {k = 1;}                                 else {k = i++;}                         }                         for (int m=1; m <= 3; m++){                                 sum += alpha[m]*M[m][3]*innerproduct(m,k);                         }                         E[k] = sum + b - M[k][3];                         sum = 0;                         oldalpha[i] = alpha[i];                         oldalpha[k] = alpha[k];                         if (M[i][3] != M[k][3]){L = Max(0, alpha[k] - alpha[i]);}                         else{ L = Max(0, alpha[i] + alpha[k] - C);}                         if (M[i][3] != M[k][3]){H = Min(C,C + alpha[k] - alpha[i]);}                         else{ H = Min(C, alpha[i] + alpha[k]);}                         if (L==H) {continue;}                         eta = 2*innerproduct(i,k) - innerproduct(i,i) - innerproduct(k,k);                         if (eta>=0) {continue;}                         alpha[k] += M[k][3]*(E[i] - E[k])/eta;                         if (alpha[k] > H) {alpha[k] = H;}                         else if (alpha[k] < L) {alpha[k] = L;}                         if (abs(alpha[k] - oldalpha[k]) < 1e-5) {continue;}                         alpha[i] += M[i][3]*M[k][3]*(oldalpha[k] - alpha[k]);                         double b1 = b - E[i] - M[i][3]*(alpha[i] - oldalpha[i])*innerproduct(i,i) - M[k][3]*(alpha[k] - oldalpha[k])*innerproduct(i,k);                         double b2 = b - E[k] - M[i][3]*(alpha[i] - oldalpha[i])*innerproduct(i,k) - M[k][3]*(alpha[k] - oldalpha[k])*innerproduct(k,k);                         if (alpha[i] > 0 && alpha[i] < C) {b = b1;}                         else if (alpha[k] > 0 && alpha[k] < C) {b = b2;}                         else {b = (b1+b2)/2;}                         num_changed_alphas++;                         }                 }                 if (num_changed_alphas==0) {passes++;}                 else {passes = 0;}         }         return 0; }```

 theevilmachines 24Jun2009 22:36

Re: Error: syntax error before `return'

Nevermind!! I fixed it. Turns out I had a brace in the wrong place at the end :\

 All times are GMT +5.5. The time now is 18:32.