Σελίδα 1 από 1

Λιγη βοηθεια με την εργασια "C"

ΔημοσίευσηΔημοσιεύτηκε: 02 Μάιος 2015, 04:03
από G_sev07
Καλησπερα παιδια, θα ηθελα λιγο τα φωτα σας με την εργασια...

/* ελεγχος για πληθος φιλων του καθε χρηστη */
Κώδικας: Επιλογή όλων
for (i=0; i<num_users; ++i) {
        printf("Number of friends of user %d: %d\n", i, findFriends(matrixF, num_users, i));



και η συναρτηση που εχω γραψει ειναι αυτη

Κώδικας: Επιλογή όλων
int findFriends (int **F, int size, int user) {
   
     int i, j;
   
    for(i=0; i<size; i++){
    user=0;
        for(j=0; j<size; j++)
        user+=F[i][j];
        return (user);}


ενω βρησκει αυτα που θελω και με ενα printf τα βγαζει σωστα.. δεν μπορω να το κανω return μετα απο καθε loop, με καποιες αλλαγες μου επιστρεφει ειτε το πρωτο loop ειτε τελευταιο σε ολους τους user :shifty:
Ευχαριστω...!

Re: Λιγη βοηθεια με την εργασια "C"  Το θέμα επιλύθηκε

ΔημοσίευσηΔημοσιεύτηκε: 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)

Re: Λιγη βοηθεια με την εργασια "C"

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

ετσι οπως το εχω τωρα μου επιστρεφει μονο το sum τις τελευταιας στηλης σε ολους του users, ενω πριν μου εδινε τις πρωτης.

Re: Λιγη βοηθεια με την εργασια "C"

ΔημοσίευσηΔημοσιεύτηκε: 02 Μάιος 2015, 05:13
από abramis
για δες παραπάνω πάλι, το φτιαχνα ξανά το ποστ.

Re: Λιγη βοηθεια με την εργασια "C"

ΔημοσίευσηΔημοσιεύτηκε: 02 Μάιος 2015, 05:35
από G_sev07
σωστα!!! τωρα δουλευει...
σε ευχαριστω πολυ!!!

Re: Λιγη βοηθεια με την εργασια "C"

ΔημοσίευσηΔημοσιεύτηκε: 02 Μάιος 2015, 09:55
από konnn

Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα. Με τον τρόπο αυτό βοηθάμε κάποιον να βρει εύκολα τη λύση σε παρόμοιο θέμα απλά πατώντας πάνω στο πράσινο τικ.



Μεταφέρθηκε στην κατάλληλη ενότητα


Τα πάντα για την C 2

ΔημοσίευσηΔημοσιεύτηκε: 04 Μάιος 2015, 00:01
από G_sev07
καλησπερα παιδια, ενα hint θα ηθελα..
εχω εναν συμμετρικο πινακα που αναπαριστα σχεσεις φιλιας
01100
10111
11010
01100
01000

εχω κανει τις πρωτες συναρησεις για εισαγωγη και για πληθος φιλων με τη βοηθεια του abramis
τωρα εχω κολλησει δεν ξερω πως να ξεκινησω τη συναρτηση που επιστεφει το πληθος κοινων φιλων των user1 kai user2

Κώδικας: Επιλογή όλων
/* ελεγχος  για πληθος κοινων φιλων*/
    for (i=0; i<num_users; ++i) {
        for (j=0; j<i; ++j) {   
            printf("Number of common friends of %d and %d: %d\n", i, j, commonFriends(matrixF, num_users, i, j));
        }


Κώδικας: Επιλογή όλων
int commonFriends (int **F, int size, int user1, int user2) {

}       

αυτα ειναι τα code tamplate που εχω..ξερω οτι πρεπει να υπαρχει 1 στο i kai j ωστε να ειναι κοινοι φιλοι οι users.

Re: Λιγη βοηθεια με την εργασια "C"

ΔημοσίευσηΔημοσιεύτηκε: 04 Μάιος 2015, 03:43
από the_eye

Μην ανοίγεις παντού ερωτήματα για την εργασία σου !
Το θέμα συγχωνεύτηκε


Re: Λιγη βοηθεια με την εργασια "C"

ΔημοσίευσηΔημοσιεύτηκε: 04 Μάιος 2015, 10:39
από konnn
Αν οι φίλοι είναι πολλοί ίσως έτσι δεν θα βγάλεις εύκολα άκρη.Αν δημιουργήσεις μια δομή δεδομένων ως υποψήφιο φίλο και σε πίνακα εντός της δομής θα αποθηκεύεις το id του άλλου φίλου;

Re: Λιγη βοηθεια με την εργασια "C"

ΔημοσίευσηΔημοσιεύτηκε: 04 Μάιος 2015, 18:18
από G_sev07
ναι απλα πρεπει να ακολουθησω το code template που εχω βαλει..
αλλα και οι φιλοι δεν ειναι πολυ.