Δημοσιεύτηκε: 02 Μάιος 2015, 04:45
από abramis
σύμφωνα με το κώδικα της συνάρτησης που βλέπω, αυτό δεν μπορεί να τρέχει γτ δεν κλείνεις ένα άγγιστρο. αν υποθέσουμε ότι το ξέχασες και είναι παρακάτω απ΄ το return το άγγιστρο που κλείνει την συνάρτηση τότε το άγγιστρο που ναι στην return, κλείνει αυτό της 1ης for της συνάρτησης δλδ για να καταλαβαίνουμε
Κώδικας: Επιλογή όλων
for(i=0; i<size; i++){
    user=0;
    for(j=0; j<size; j++)
        user+=F[i][j];
    return (user);
}

αυτό έχεις γράψει ουσιαστικά. η 2η for κάνει αυτό "user+=F[i][j];" μόνο και το κάνει για κάθε τιμή του i κανονικά αλλά στη συγκεκριμένη περίπτωση το κάνει μόνο για i=0 αφού μετά βρίσκει return και τερματίζει η συνάρτηση. δλδ η συνάρτηση επιστρέφει τιμή όταν το i=0, δλδ κάνει μια φορά το loop. δεν μπορείς να κάνεις πολλά return, 1 μόνο γίνεται, και μόλις γίνει τερματίζει τη συνάρτηση. άμα θες να χεις κι άλλο return πρεπει να ξανακαλέσεις τη συνάρτηση το οποίο κάνεις στη printf αφού είναι μέσα σε for. το θέμα είναι ότι αυτό user+=F[i][j]; πάντα είναι user+=F[0][j]; ουσιαστικά . κάτι τέτοιο δλδ θα χε περισσότερο σημασία:
Κώδικας: Επιλογή όλων
int findFriends (int *F, int size, int user) {

int  j;
int sum=0;

for(j=0; j<size; j++)
     sum+=F[user][j];
return (sum);
}

έβαλα ένα * στο F. δεν νομίζω να σου δουλεύει με ** έτσι πως την καλείς. με 2 θα δούλευε άμα την καλούσες findFriends(&matrixF, num_users, i)