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

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

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

Δημοσίευσηαπό G_sev07 » 02 Μάιος 2015, 04:03

Καλησπερα παιδια, θα ηθελα λιγο τα φωτα σας με την εργασια...

/* ελεγχος για πληθος φιλων του καθε χρηστη */
Κώδικας: Επιλογή όλων
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:
Ευχαριστω...!
Τελευταία επεξεργασία από G_sev07 και 02 Μάιος 2015, 05:11, έχει επεξεργασθεί 1 φορά/ες συνολικά
Άβαταρ μέλους
G_sev07
babeTUX
babeTUX
 
Δημοσιεύσεις: 5
Εγγραφή: 02 Μάιος 2015, 03:19
Εκτύπωση

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

Δημοσίευσηαπό abramis » 02 Μάιος 2015, 04:45

σύμφωνα με το κώδικα της συνάρτησης που βλέπω, αυτό δεν μπορεί να τρέχει γτ δεν κλείνεις ένα άγγιστρο. αν υποθέσουμε ότι το ξέχασες και είναι παρακάτω απ΄ το 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)
Τελευταία επεξεργασία από abramis και 02 Μάιος 2015, 05:12, έχει επεξεργασθεί 1 φορά/ες συνολικά
1 Γνώσεις Linux: Μέτρια┃ Προγραμματισμού: Μέτρια ┃ Αγγλικών: Μέτρια
2 Ubuntu 18.04 bionic 4.18.0-16-generic 64bit (el_GR.UTF-8, XFCE xubuntu), Windows 7
3 Intel Core2 Quad CPU Q8300 2.50GHz ‖ RAM 3943 MiB ‖ Gigabyte G31M-S2L
4 Advanced Micro Devices, Inc. [AMD/ATI] Bonaire XTX [Radeon R7 260X/360] [1002:6658] {radeon}
5 enp3s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 02)
laptop:
Spoiler: show
Ubuntu 18.04 bionic 5.0.0-32-generic 64bit(GNOME gnome),Windows 10, Lenovo B50-80, Intel Celeron 3205U @ 1.50GHz, RAM 7902 MiB, Intel Broadwell-U Graphics [8086:1606] {i915}
Άβαταρ μέλους
abramis
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 750
Εγγραφή: 02 Αύγ 2011, 03:01
Τοποθεσία: Θεσ/νίκη
Launchpad: goldmetal
Εκτύπωση

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

Δημοσίευσηαπό G_sev07 » 02 Μάιος 2015, 05:09

εχεις δικιο για το αγγιστο απλα ηταν λιγο πιο κατω και δεν το εκανα 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, ενω πριν μου εδινε τις πρωτης.
Άβαταρ μέλους
G_sev07
babeTUX
babeTUX
 
Δημοσιεύσεις: 5
Εγγραφή: 02 Μάιος 2015, 03:19
Εκτύπωση

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

Δημοσίευσηαπό abramis » 02 Μάιος 2015, 05:13

για δες παραπάνω πάλι, το φτιαχνα ξανά το ποστ.
1 Γνώσεις Linux: Μέτρια┃ Προγραμματισμού: Μέτρια ┃ Αγγλικών: Μέτρια
2 Ubuntu 18.04 bionic 4.18.0-16-generic 64bit (el_GR.UTF-8, XFCE xubuntu), Windows 7
3 Intel Core2 Quad CPU Q8300 2.50GHz ‖ RAM 3943 MiB ‖ Gigabyte G31M-S2L
4 Advanced Micro Devices, Inc. [AMD/ATI] Bonaire XTX [Radeon R7 260X/360] [1002:6658] {radeon}
5 enp3s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 02)
laptop:
Spoiler: show
Ubuntu 18.04 bionic 5.0.0-32-generic 64bit(GNOME gnome),Windows 10, Lenovo B50-80, Intel Celeron 3205U @ 1.50GHz, RAM 7902 MiB, Intel Broadwell-U Graphics [8086:1606] {i915}
Άβαταρ μέλους
abramis
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 750
Εγγραφή: 02 Αύγ 2011, 03:01
Τοποθεσία: Θεσ/νίκη
Launchpad: goldmetal
Εκτύπωση

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

Δημοσίευσηαπό G_sev07 » 02 Μάιος 2015, 05:35

σωστα!!! τωρα δουλευει...
σε ευχαριστω πολυ!!!
Άβαταρ μέλους
G_sev07
babeTUX
babeTUX
 
Δημοσιεύσεις: 5
Εγγραφή: 02 Μάιος 2015, 03:19
Εκτύπωση

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

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

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



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

1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3566
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

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

Δημοσίευσηαπό G_sev07 » 04 Μάιος 2015, 00:01

καλησπερα παιδια, ενα 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.
Άβαταρ μέλους
G_sev07
babeTUX
babeTUX
 
Δημοσιεύσεις: 5
Εγγραφή: 02 Μάιος 2015, 03:19
Εκτύπωση

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

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

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

Όσο λιγότερο κλειστό λογισμικό έχεις, τόσα λιγότερα προβλήματα.
1 Γνώσεις ⇛ Linux: Καλό ┃ Προγραμματισμός: Ναι PHP, MySQL ┃ Αγγλικά: Καλά
2 Ubuntu 18.04 bionic 4.15.0-42-generic 64bit (el_GR.UTF-8, GNOME-Flashback:Unity gnome-flashback-compiz)
3 Intel Core i3-6100 CPU @ 3.70GHz ‖ RAM 3832 MiB ‖ Gigabyte B150M-HD3 DDR3-CF
4 Intel Sky Lake Integrated Graphics [8086:1912] {i915_bpo}
5 enp1s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
Οδηγοί Ubuntu Βίντεο Οδηγοί
Άβαταρ μέλους
the_eye
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 11455
Εγγραφή: 16 Μαρ 2010, 17:19
Launchpad: ntoulasd
IRC: the_eye_
Εκτύπωση

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

Δημοσίευσηαπό konnn » 04 Μάιος 2015, 10:39

Αν οι φίλοι είναι πολλοί ίσως έτσι δεν θα βγάλεις εύκολα άκρη.Αν δημιουργήσεις μια δομή δεδομένων ως υποψήφιο φίλο και σε πίνακα εντός της δομής θα αποθηκεύεις το id του άλλου φίλου;
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3566
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

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

Δημοσίευσηαπό G_sev07 » 04 Μάιος 2015, 18:18

ναι απλα πρεπει να ακολουθησω το code template που εχω βαλει..
αλλα και οι φιλοι δεν ειναι πολυ.
Άβαταρ μέλους
G_sev07
babeTUX
babeTUX
 
Δημοσιεύσεις: 5
Εγγραφή: 02 Μάιος 2015, 03:19
Εκτύπωση


  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι