badly placed ()'s

i'm trying to run the following program but i keep getting the message "badly placed ()'s" can u help?

#include "modularity_mat.h"
#include "../sparse_mlpl/sparse_matrix.h"

adj_matrix_arr* allocate_mem_for_matrix_arr (int y) {
    /* Create the adj matrix and allocate memory */
    adj_matrix_arr* A;
    A = ((adj_matrix_arr*)malloc(sizeof(adj_matrix_arr)));
    if (A == NULL) {
        printf("Memory allocation for matrix failed");
        return NULL;
    }
    /* Initialize values */
    A->size = y;
    A->values = ((elem*)calloc(y*y, sizeof(elem)));
    if (A->values == NULL) {
        printf("Memory allocation for matrix failed");
        return NULL;
    }    
    return A ;}

group_arr* allocate_mem_for_group_arr (int y) {

    /* Create the group and allocate memory */
    group_arr* g;
    g = (malloc(sizeof(group_arr)));
    if (g == NULL) {
        printf("Memory allocation for group failed");
        return NULL;}

    /* Initialize values */
    g->size = y;
    g->values = ((int*)calloc(y, sizeof(int)));
    if (g->values == NULL) {
        printf("Memory allocation for group failed");
        return NULL;}    
    return g ;}

adj_matrix_arr *get_matrix_from_file (char *f_name){
    int y , i;
    elem num;
    adj_matrix_arr *A;    
    FILE *m_file;

    /* Open file handlers */
    m_file = fopen(f_name, "r");
    if ( m_file == NULL ) {
        printf ("file not found");
        fclose(m_file);
        return NULL;
    }

    /* Read data */
    if ((fscanf(m_file, "%d", &y)) <= 0) {
        printf("scan failed");
        fclose(m_file);
        return NULL;
    }
    A = allocate_mem_for_matrix_arr (y);
    for (i=0; i < y*y; i++) {
        if ((fscanf(m_file, "%lf", &num)) <= 0) {
            fclose(m_file);
            printf("Scan failed");
            return NULL;
        }
        A->values = num;
    }
    fclose(m_file);
    return A;
}

group_arr *get_group_from_file(char *f_name) {
    FILE *g_file;
    group_arr* g;
    int num; 
    int n, i;

    /* Open file handlers */
    g_file = fopen(f_name, "r");
    if (g_file == NULL ) {
        printf("file not found");
        fclose(g_file);
        return NULL;
    }

    /* Read data */        
    g = allocate_mem_for_group_arr(0);
    for(i=0 ; i<n; i++){
        if (fscanf(g_file , "%d", &num) <= 0) 
            break;
        g->size++;
        g->values = (int*)realloc(g->values, sizeof(int)*(i+1));
        if (g->values == NULL) {
            printf("Memory allocation for group failed");
            fclose(g_file);
            return NULL;
        } 
        g->values=num ;}
    fclose(g_file);
    return g ;}



/* Given a adj matrix and a group, create the sparse sub-matrix according to the group */
adj_matrix_arr* create_mat(adj_matrix_arr* m, group_arr *g) {
    int i,j;
    int y = g->size;
    adj_matrix_arr* A;
    A = allocate_mem_for_matrix_arr(y);
    if (A == NULL) return NULL;
    for (i=0; i < y; i++) {
        for (j=0; j < y; j++) {
            A->values[i*y + j] = m->values[(g->values) * (m->size) + g->values[j]];
        }
    }
    return A;
}




adj_matrix_arr* edges_count(adj_matrix_arr* m) {
    int i,j;
    int M = 0;
    adj_matrix_arr* A;
    int* deg;
    deg = (int*)calloc(m->size, sizeof(int));
    if (deg == NULL) {
        printf("Memory allocation failed");
        return NULL;
    }
    for (i=0; i<m->size;i++) { 
        for (j=0; j<m->size;j++) {
            deg += (int)m->values[i*m->size + j];
        }
    }
    
    for(i=0; i<m->size; i++)
        M += deg;
    
    if ((A = allocate_mem_for_matrix_arr(m->size)) == NULL) return NULL;
    
    for (i=0; i<m->size;i++) { 
        for (j=0; j<m->size;j++) {
            A->values[i*A->size + j] = (deg*deg[j])/(double)M;
        }
    }
    
    return A;
;}


adj_matrix_arr* create_modol_m(adj_matrix_arr* A, adj_matrix_arr* C) {
    int i,j;
    int y = A->size;
    adj_matrix_arr *B;
    B = allocate_mem_for_matrix_arr(y);
    if ( B == NULL) return NULL;
    for (i=0; i < y; i++) { 
        for (j=0; j < y; j++)
            B->values[i*y + j] = A->values[i*y + j] - C->values[i*y + j];
    }
    return B;
}    




elem* calc_fg(adj_matrix_arr *B) {
    int i,j;
    int y = B->size;
    elem *fg;
    fg = calloc(y, sizeof(elem));
    if (fg == NULL) {
        printf("memory allocation failed");
        return NULL;
    }
    for (i=0; i < y; i++)
        for (j=0; j < y; j++){
            fg += B->values[i*y + j];}
    return fg;
}

adj_matrix_arr* calc_g_modol_m(adj_matrix_arr* Bg, elem *fg) {
    int i,j,y;
    adj_matrix_arr *HBj;

    y = Bg->size;
    HBj = allocate_mem_for_matrix_arr(y);
    if (HBj == NULL) return NULL;
    for (i=0; i < y; i++)
        for (j=0; j < y; j++)
            HBj->values[i*y + j] = Bg->values[i*y + j] - delta(i,j)*fg;
    return HBj;
}

void print_matrix(adj_matrix_arr* A) {
    int i,j;
    int y = A->size;
    printf("%d \n", y);
    for (i=0; i < y; i++) {
        for (j=0; j < y; j++) {
            printf("%.6f ", A->values[i*y + j]);
            }
        if (i != y-1)
            printf("\n");
    }
}

int delta(int i, int j) {
    if (i == j)
        return 1;
    else 
        return 0;
}

adj_matrix_arr *create_g_mod_m(adj_matrix_arr *A, group_arr *g) {
    adj_matrix_arr *Ag, *B, *Bg, *HBj, *C;
    elem* fg;
    
/* Create the necessary data for eigenpair computation */
    Ag = create_mat(A, g);
    if (Ag == NULL) return NULL;
    C = edges_count(A);
    if (C == NULL) {
        free_adj_matrix_arr(Ag);
        return NULL;
    }
    B = create_modol_m(A, C);
    if (B == NULL) {
        free_adj_matrix_arr(Ag);
        free_adj_matrix_arr(C);
        return NULL;
    }
    Bg = create_mat(B, g);
    if (Bg == NULL) {
        free_adj_matrix_arr(Ag); 
        free_adj_matrix_arr(C);
        free_adj_matrix_arr(B);
        return NULL;
     }
    fg = calc_fg(Bg);
    if (fg == NULL) {
        free_adj_matrix_arr(Ag);
        free_adj_matrix_arr(C);
        free_adj_matrix_arr(B);
        free_adj_matrix_arr(Bg);
        return NULL;
    } 
    HBj = calc_g_modol_m(Bg,fg);
    if (HBj == NULL) {
        free_adj_matrix_arr(Ag);
        free_adj_matrix_arr(C); 
        free_adj_matrix_arr(B);
        free_adj_matrix_arr(Bg);
        free(fg);
        return NULL;
    }
    
    free_adj_matrix_arr(Ag);
    free_adj_matrix_arr(C);
    free_adj_matrix_arr(B);
    free_adj_matrix_arr(Bg);
    free(fg);
    return HBj;
}



void free_adj_matrix_arr(adj_matrix_arr* m) {
    if (m != NULL) {
        free(m->values);
        free(m);
    }
}



void free_group_arr(group_arr* g) {
    if (g != NULL) {
        free(g->values);
        free(g);
    }
}

To keep the forums high quality for all users, please take the time to format your posts correctly.

First of all, use Code Tags when you post any code or data samples so others can easily read your code. You can easily do this by highlighting your code and then clicking on the # in the editing menu. (You can also type code tags

```text
 and 
```

by hand.)

Second, avoid adding color or different fonts and font size to your posts. Selective use of color to highlight a single word or phrase can be useful at times, but using color, in general, makes the forums harder to read, especially bright colors like red.

Third, be careful when you cut-and-paste, edit any odd characters and make sure all links are working property.

Thank You.

The UNIX and Linux Forums

Hi Roni, "HBj" seemed a variable to me below,if so you should use square brackets [] instead of ().

    HBj = allocate_mem_for_matrix_arr(y);
    if [HBj == NULL] return NULL;

Besides as far as i know in FOR DO loops you should use double rounded brackets below

    for ((i=0; i < y; i++))
        for ((j=0; j < y; j++))