Title: [Δομ. Προγρ.] Εργασία C Post by: Emfanever on May 05, 2009, 23:48:45 pm Εργασια C (Hμ/νία λήξης δηλώσεων: 11/05/2009)
Εργασία C Ένα δίκτυο μετάδοσης δεδομένων αποτελείται από Ν κόμβους (μέγιστη τιμή για το Ν = 10), αριθμημένους από το 0 έως το Ν-1, συνδεδεμένους μεταξύ τους με οπτικές ίνες. Οι κόμβοι συνδέονται είτε άμεσα με οπτική ίνα είτε έμμεσα μέσο άλλων κόμβων. Για να αναπαρασταθεί το δίκτυο χρησιμοποιείται ο πίνακας δύο διαστάσεων adj τύπου 10x10 στον οποίο το στοιχείο adj[i ][j] έχει τιμή 1 αν ο κόμβος i συνδέεται άμεσα με τον κόμβο j διαφορετικά το στοιχείο έχει την τιμή 0. Να γραφεί το πρόγραμμα το οποίο να δημιουργεί τον πίνακα adj και να εκτυπώνει, για κάθε κόμβο, τους κόμβους με τους οποίους συνδέεται άμεσα και τους κόμβους με τους οποίους συνδέεται έμμεσα με τη μεσολάβηση ενός μόνο κόμβου. Βοηθητικές παρατηρήσεις Για να δοθεί τιμή στο στοιχείο adj[i ][j] το πρόγραμμα να ρωτά αν ο κόμβος i συνδέεται άμεσα με τον κόμβο j και εάν ναι να θέτει adj[i ][j]=1 διαφορετικά να θέτει adj[i ][j]=0. ΠΡΟΣΟΧΗ: Επισημαίνεται ότι τα αρχεία που θα υποβάλλονται είναι αρχεία κειμένου. Δεν γίνονται δεκτά αρχεία Word, συμπιεσμένα αρχεία ή αρχεία με οποιαδήποτε άλλη μορφή. Επίσης δεν γίνονται δεκτά αρχεία που δεν ακολουθούν για το όνομά τους τη μορφή που ορίστηκε (γράμμα της εργασίας + ΑΕΜ .C). Τέλος δεν γίνονται δεκτά περισσότερα από ένα αρχεία για κάθε φοιτητή. Κάθε παραβίαση των πιο πάνω κανόνων έχει ως συνέπεια την ακύρωση της συγκεκριμένης εργασίας Επισημαίνεται ακόμη ότι εργασίες που υποβάλλονται με πλασματικούς αριθμούς μητρώου δεν μπορούν να γίνουν δεκτές Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Emfanever on May 05, 2009, 23:50:18 pm Από εδώ και στο εξής ας γίνονται ξεχωριστά τόπικ για κάθε εργασία, για να είναι πιο εύκολη η συζήτηση και η πρόσβαση στην εκφώνηση.
Απορίες που δεν αφορούν την εργασία, θα γίνονται στο τόπικ των ασκήσεων Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Merlin on May 05, 2009, 23:53:49 pm Ρε παίδες,στην 3η εργασία,για να καταλάβω,θέλει να κάνουμε έναν 10x10 πίνακα του οποίου οι γραμμές θα περιέχουν την πληροφορία αν ο i κόμβος συνδέεται με τον 0<=j<10 κόμβο?
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Merlin on May 06, 2009, 00:06:23 am Άκυρο,μόλις ξαναδιάβασα την εκφώνηση....
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Merlin on May 06, 2009, 00:46:41 am Αν θέλω να εμφανίζει ένα μήνυμα μόνο στην περίπτωση else μιας εντολής if-else-if τι κάνω?Έχω γράψει:
else { printf("Grapste 'nai' h 'oxi' an agapate th zwh sas:)"); gets(s); } και μου βγάζει το μήνυμα σε οποιαδήποτε περίπτωση... Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ggpyr on May 06, 2009, 17:04:01 pm Σε κάποιο σημείο έχω αυτό:
for(i=0;i<N-1;i++) { for(j=i+1;j<N;j++) { printf("%s%d%s%d%s\n","Συνδέεται ό ",i," κόμβος άμεσα με τον ",j," ; Y/N"); scanf("%c",&f); if(f=='y'||f=='Y') { adj[ i ][ j ]=1; adj[ j ][ i ]=1; } } } μπορείτε να βρείτε το λάθος?? μου εμφανίζει 2 φορές το μήνυμα, για j=1 (π.χ.) και για το j=2 και μετά ζητάει τιμή και ουσιαστικά χάνω έτσι τις μισές τιμές :-[ Title: Re: [Δομ. Προγρ.] Εργασία C Post by: timon on May 06, 2009, 21:43:12 pm Το OR λεει στις σημειωσεις πως γραφεται στη C ΑΛΛΑ δεν το βρισκω στο πληκτρολογιο?? Πως το εισαγουμε?
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Emfanever on May 06, 2009, 21:45:32 pm ||
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: timon on May 06, 2009, 21:54:35 pm Mε δυο οριζοντιες παραλληλες? Στις σημειωσεις λεει για 2 οριζοντιες διακεκομμενες παραλληλες...
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: il capitano on May 06, 2009, 21:56:09 pm Βασικά, για κάποιον λόγο που δεν έχω καταλάβει μέχρι στιγμή, τα δύο σύμβολα είναι ίδια!!!!!!!!!!!!!!!!
;D ;D ;D ;D ;D ;D ;D Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Emfanever on May 06, 2009, 21:57:28 pm Σε κάποιο σημείο έχω αυτό: for(i=0;i<N-1;i++) { for(j=i+1;j<N;j++) { printf("%s%d%s%d%s\n","Συνδέεται ό ",i," κόμβος άμεσα με τον ",j," ; Y/N"); scanf("%c",&f); // to provlima paizei edw if(f=='y'||f=='Y') { adj[ i ][ j ]=1; adj[ j ][ i ]=1; } } } μπορείτε να βρείτε το λάθος?? μου εμφανίζει 2 φορές το μήνυμα, για j=1 (π.χ.) και για το j=2 και μετά ζητάει τιμή και ουσιαστικά χάνω έτσι τις μισές τιμές :-[ το πρόβλημα είναι ότι όταν πατάς enter για να διαβάσει το Y/N , στο επόμενο scanf, στο f αποθηκεύεται αυτόματα το enter που πάτησες, γιατί είναι χαρακτήρας ουσιαστικά. μπορείς να κάνεις 3 πράγματα 1) Να βάλεις πριν από το scanf την εντολή fflush(stdin); που καθαρίζει το κανάλι εισόδου από το enter. 2) Να βάλεις (edit) 3) Να γράψεις το scanf με ένα κενό πριν το %c , δλδ έτσι scanf(" %c",&f); Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Emfanever on May 06, 2009, 21:58:19 pm Mε δυο οριζοντιες παραλληλες? Στις σημειωσεις λεει για 2 οριζοντιες διακεκομμενες παραλληλες... ναι με δυο οριζόντιες παράλληλες, είναι στο ίδιο πλήκτρο με το \ δε ξέρω γτ στις σημειώσεις το έχει έτσι Title: Re: [Δομ. Προγρ.] Εργασία C Post by: palai on May 07, 2009, 01:15:31 am Πως εκτυπωνεις εναν πινακα?
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Γιώργος on May 07, 2009, 01:48:40 am Πως εκτυπωνεις εναν πινακα? Ε προφανώς διατρέχεις ένα-ένα τα στοιχεία του και τα τυπώνεις ............Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Kaelthas on May 08, 2009, 00:51:20 am Εχει αποκρυπτογραφήσει κανείς την άσκηση μέχρι στιγμής;;;;
Σε κάποιο σημείο έχω αυτό: for(i=0;i<N-1;i++) { for(j=i+1;j<N;j++) { printf("%s%d%s%d%s\n","Συνδέεται ό ",i," κόμβος άμεσα με τον ",j," ; Y/N"); scanf("%c",&f); // to provlima paizei edw if(f=='y'||f=='Y') { adj[ i ][ j ]=1; adj[ j ][ i ]=1; } } } Με αφορμή τον κώδικα που ανέβασε καποιος πιο πάνω, υποθέτω πως μπορουμε να δουλέψουμε μονο με τα στοιχεία του ανω τριγωνικού (ή κάτω) μερους του πίνακα αφου είναι συμμετρικός. Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Tom on May 08, 2009, 01:10:31 am Νομίζω πως το πιο δύσκολο κομμάτι είναι αυτό που ζητάει την εμφάνιση των κόμβων που συνδέονται έμμεσα με την μεσολάβηση ενός μόνο κόμβου.
Σε ότι αφορά το γέμισμα του πίνακα adj, τα στοιχεία που έχουν i=j τα θέτουμε ίσα με το μηδέν ??? Title: Re: [Δομ. Προγρ.] Εργασία C Post by: antonios on May 08, 2009, 03:14:01 am Κατάλαβα λάθος ρε παιδιά?? Πώς μπορούμε να ξεχωρίσουμε αν 2 κόμβοι συνδέονται μέσω ενός τρίτου??? Ο πίνακας μόνο 1 και 0 δεν έχει?
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ggpyr on May 08, 2009, 08:25:49 am Προφανώς αν π.χ. ο κόμβος 1 συνδέεται με τον 3 άμεσα adj[1][3]=1 και επίσης adj[3][2]=1 αλλά adj[1][2]=0 τότε οι κόμβοι 1 και 2 συνδέονται έμμεσα με την μεσολάβηση 1 κόμβου (του 3)
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: erotokritos on May 08, 2009, 12:38:47 pm while (f!='0'||f!='1'){
printf("lathos timi !!dose 1 gia amesi i 0 gia emesi syndesi!!!!"); scanf("%d",&f); } υπαρχει καποιο λαθοσ εδω?γιατι αφου το τρεξω και πατησω ειτε 1 ειτε 0 , μου βγαζει "lathos timi !!dose 1 gia amesi i 0 gia emesi syndesi!!!!" Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Kaelthas on May 08, 2009, 12:53:14 pm Για δοκίμασε να βάλεις && και οχι || . Καπου εκεί πρέπει να είναι το λαθος...
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Merlin on May 08, 2009, 12:55:02 pm Δοκίμασε να βγάλεις τα '',λογικά το θεωρεί σταθερά τύπου char με αυτά.Αν έχεις δηλώσει την f σαν int,που υποθέτω ότι έχεις κάνει αν κρίνω από το %d,τότε δεν καταλαβαίνω πως καν δέχεται ο compiler σύγκριση μεταξύ int και char.Έχω την εντύπωση ότι στην c++ αυτό θα χτυπούσε.Καμιά ιδέα?
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: erotokritos on May 08, 2009, 12:58:22 pm δοκιμασα και && και εβγαλα και τα ' ' ...αλλα παλι δε κανει σωστα τον ελεγχο
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: erotokritos on May 08, 2009, 13:00:00 pm δηλωσα την f σαν τυπου char αλλα παλι δε γινεται τιποτα!!!!!!!!
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Emfanever on May 08, 2009, 13:02:57 pm while (f!='0'||f!='1'){ printf("lathos timi !!dose 1 gia amesi i 0 gia emesi syndesi!!!!"); scanf("%d",&f); } υπαρχει καποιο λαθοσ εδω?γιατι αφου το τρεξω και πατησω ειτε 1 ειτε 0 , μου βγαζει "lathos timi !!dose 1 gia amesi i 0 gia emesi syndesi!!!!" λογικά η τιμή που έχει αρχικά το f είναι διάφορο του 0 και 1. Άρα λογικό είναι να μπαίνει στο loop και να σου βγάζει το μήνυμα. Πρέπει να το κάνεις με do while Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Merlin on May 08, 2009, 13:19:24 pm Aν το κάνεις με do while πρόσεξε να βάλεις κάτι του στυλ: if(!(f==1||f==0)) printf.... κτλ,γιατί και με do while θα σου εμφανίσει το μύνημα σφάλαμτος πριν την scanf.Αλλιώς βάλε άλλη μια scanf πριν την while και άσε απαράλλαχτο το πρόγραμμα.Τα λέω σωστά Emfa?
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Emfanever on May 08, 2009, 13:27:49 pm ναι σωστά! :P
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ΡΕΣΑΛΤΟ on May 08, 2009, 18:13:42 pm Ρε παιδια μπορει καποιος να εξηγησει λιγο τη λογικη του πως βρισκουμε τους κομβους που συνδεονται εμμεσα με τη μεσολαβηση ενος μονο κομβου;
Ο Κορτεσης δε θα αλλαξει εκφωνησεις ποτε, οσες φορες και αν δωσεις το μαθημα... ;D Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ggpyr on May 08, 2009, 20:16:11 pm Εγώ κατάλαβα οτι για να συνδέονται π.χ. ο 1 και ο 2 κόμβος έμμεσα με μεσολάβηση 1 κόμβου θα πρέπει να ισχύει
1)adj[1][2]=0 γιατί αν ήταν =1 τότε θα συνδέονταν άμεσα 2)adj[1][k]=1 και adj[2][k]=1 όπου k ο κόμβος που μεσολαβεί Βάλε τα παραπάνω σε for και if και είσαι ok Title: Re: [Δομ. Προγρ.] Εργασία C Post by: El Niño on May 09, 2009, 14:58:19 pm Εγώ κατάλαβα οτι για να συνδέονται π.χ. ο 1 και ο 2 κόμβος έμμεσα με μεσολάβηση 1 κόμβου θα πρέπει να ισχύει ουτε γω καταλαβαινω ρε..δηλαδη λεμε οτι συνδεεται αμεσα αν ειναι ας πουμε adj[3][4] και εμμεσα αν ειναι ας πουμε adj[4][6]??οταν εχουν δηλαδη διαφορα πανω απο 1?1)adj[1][2]=0 γιατί αν ήταν =1 τότε θα συνδέονταν άμεσα 2)adj[1][k]=1 και adj[2][k]=1 όπου k ο κόμβος που μεσολαβεί Βάλε τα παραπάνω σε for και if και είσαι ok Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ggpyr on May 09, 2009, 16:57:57 pm lol Ότι νάναι κατάλαβες... :D :D
Οι αριθμοί των κόμβων(κόμβος 1, κόμβος 2, κόμβος 300...)δεν λεέι τίποτα είναι απλά ένα όνομα... Ο πίνακας adj[ i ][ j ] μας λέει αν ο κόμβος i και ο κόμβος j συνδέονται (adj[ i ][ j ]=1) ή όχι (adj[ i ][ j ]=0)... δηλαδή μπορεί και ο κόμβος 3 να συνδέεται με τον 6 (με τον πίνακα να έχει τιμή 1 adj[3][6]=1) Title: Re: [Δομ. Προγρ.] Εργασία C Post by: El Niño on May 09, 2009, 17:27:29 pm καλα και πως ξερω ποιοι κομβοι συνδεονται αμμεσα με ποιους?
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: il capitano on May 09, 2009, 17:32:44 pm Ο κόμβος i συνδέεται άμεσα με τον j αν και μόνον αν adj[j]=1
Αν δεν συνδέονται άμμεσα adj[j]=0 Έτσι έχεις κατασκευάσει εξ αρχής τον πίνακα adj Title: Re: [Δομ. Προγρ.] Εργασία C Post by: El Niño on May 09, 2009, 17:33:45 pm δηλαδη??
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: nasia!! on May 09, 2009, 17:38:29 pm Θα διατρέξεις όλο τον πίνακα adj και θα ψάξεις να βρεις τα στοιχεία για τα οποία θα ισχύει adj[j]=1 και θα λες,άρα ο i κόμβος θα συνδέεται με τον j!Και θα εκτυπώνει τον j!
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: El Niño on May 09, 2009, 17:44:00 pm πως μπορει να ισχυει adj[j]=1?με τι συνθηκη το εξεταζω αυτο?αρε κορτεση φιλοσοφε!
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: nasia!! on May 09, 2009, 17:47:16 pm πως μπορει να ισχυει adj[j]=1?με τι συνθηκη το εξεταζω αυτο?αρε κορτεση φιλοσοφε! θα ψάξεις να βρεις τα στοιχεία για τα οποία θα ισχύει adj[j]=1 γμτ..πάω να γράψω κάτι άλλο..και μου το εμφανίζει αλλιώς..γιατί? thelo na po Code: adj[i][j]=1 Title: Re: [Δομ. Προγρ.] Εργασία C Post by: El Niño on May 09, 2009, 17:48:06 pm καλα αστο...δεν το χω!
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Γιώργος on May 09, 2009, 17:50:26 pm πως μπορει να ισχυει adj[j]=1?με τι συνθηκη το εξεταζω αυτο?αρε κορτεση φιλοσοφε! if (adj[j] == 1) ....... Φλασιά που με ήρθε: recursion ::) Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Emfanever on May 09, 2009, 17:56:07 pm πως μπορει να ισχυει adj[j]=1?με τι συνθηκη το εξεταζω αυτο?αρε κορτεση φιλοσοφε! θα ψάξεις να βρεις τα στοιχεία για τα οποία θα ισχύει adj[j]=1 γμτ..πάω να γράψω κάτι άλλο..και μου το εμφανίζει αλλιώς..γιατί? thelo na po Code: adj[i][j]=1 δεν εμφανίζει το Code: [i] οπότε να βάζετε τον κώδικα σε [ code][/code ] για να μην υπάρχει πρόβλημα Title: Re: [Δομ. Προγρ.] Εργασία C Post by: nasia!! on May 09, 2009, 17:56:46 pm χαχα..ναι για αυτο το δα μετα..το κατάλαβα το κολπάκι! :P
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: El Niño on May 09, 2009, 17:58:51 pm ναι ομως επειδη εμενα με μπερδεψατε γραψτε κανονικα τι θελατε να πειτε!
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: nasia!! on May 09, 2009, 18:00:34 pm Θα διατρέξεις όλο τον πίνακα adj και θα ψάξεις να βρεις τα στοιχεία για τα οποία θα ισχύει Code: adj[i][j]=1 Title: Re: [Δομ. Προγρ.] Εργασία C Post by: El Niño on May 09, 2009, 18:01:50 pm δηλαδη τι θα μου εμφανιζει??
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ΡΕΣΑΛΤΟ on May 09, 2009, 19:00:30 pm τρεξτο να δεις....
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: El Niño on May 09, 2009, 19:01:12 pm για να το τρεξω πρεπει να το κανω...και για να το κανω πρεπει να καταλαβω πως!
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Γιώργος on May 09, 2009, 19:08:10 pm Ρε Ορέστη, διασχίζεις τον πίνακα αρχικά. Ρίχνεις έναν έλεγχο
Code: if (adj[i][j]==1) ...... και κάνεις παιχνίδι εκεί μέσα. Simple. :) Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ΡΕΣΑΛΤΟ on May 09, 2009, 20:50:47 pm Υπαρχει περιπτωση να συνδεονται κομβοι εμμεσα με τη μεσολαβηση 1 αλλου, ειτε με περισσοτερους την ιδια στιγμη, Εξαρταται απο τη διαδρομη που ακολουθεις.
Τι κανουμε σ'αυτη την περιπτωση; :???: Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Γιώργος on May 09, 2009, 20:54:15 pm Υπαρχει περιπτωση να συνδεονται κομβοι εμμεσα με τη μεσολαβηση 1 αλλου, ειτε με περισσοτερους την ιδια στιγμη, Εξαρταται απο τη διαδρομη που ακολουθεις. Δεν το διευκρινίζει η εκφώνηση, κλασικός Κορτέσης. :PΤι κανουμε σ'αυτη την περιπτωση; :???: Απ' τη στιγμή που δεν λέει τι να κάνεις θεωρώ ότι μπορείς να κάνεις ό,τι νομίζεις εσύ. Το πιο εύκολο είναι να κάνεις τον Σημίτη (aka Κινέζο :P) και να το τυπώσεις και πάλι. :) Άλλωστε δεν είναι και τόσο απλό να το τεστάρεις αυτό αν έχεις ήδη βρει σύνδεση. Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ggpyr on May 09, 2009, 21:09:38 pm Υπαρχει περιπτωση να συνδεονται κομβοι εμμεσα με τη μεσολαβηση 1 αλλου, ειτε με περισσοτερους την ιδια στιγμη, Εξαρταται απο τη διαδρομη που ακολουθεις. Τι κανουμε σ'αυτη την περιπτωση; :???: Εμάς μας ενδιαφέρει αν συνδέοντα με μεσολάβηση 1...τώρα αν συνδέονται και ταυτόχρονα τηλεπαθητικά ή δεν ξέρω και εγώ τί δεν μας νοιάζει εσύ απλά το εμφανίζεις Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ΡΕΣΑΛΤΟ on May 09, 2009, 21:19:14 pm ειναι ευκολο καποιος να επαναλαβει λεπτομερεστερα τη λογικη ευρεσης των εμμεσων συνδεσεων μεσω ενος κομβου; :???:
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ggpyr on May 09, 2009, 21:24:35 pm εγώ έβαλα τo παρακάτο if
if(adj[ i ][ j ]==0&&adj[ j ][ p ]==1&&adj[ p ][ i ]==1)...τότε ο i και j συνδέονται έμμεσα με τη μεσολάβηση του p (hope it's right :-\) και πριν από αυτό 3 for (για τα i,,j,p) Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ΡΕΣΑΛΤΟ on May 09, 2009, 21:27:26 pm το p τι τιμες παιρνει;
ουσιαστικα και γω αυτο εχω κανει, ομως δεν εχω προσδιορισει πως κινειται ο δεικτης p Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ggpyr on May 09, 2009, 21:30:06 pm το p προφανώς παίρνει τις τιμές απο 1 εως n εκτός του i, j και το for του μπαίνει μέσα απο τα for των i και j
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ΡΕΣΑΛΤΟ on May 09, 2009, 21:35:59 pm μετρας απο το 1 ή απο το 0;
δουλευω με τα στοιχεια ανω της διαγωνιου, αν και δε νομιζω να υπαρχει προβλημα μ'αυτη τη μεταβολη. Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ggpyr on May 09, 2009, 21:38:37 pm μετρας απο το 1 ή απο το 0; δουλευω με τα στοιχεια ανω της διαγωνιου, αν και δε νομιζω να υπαρχει προβλημα μ'αυτη τη μεταβολη. ναι όντως από το 0 αφού το στοιχείο i του adj[ i][j] είναι από 0 έως n-1 ...αλλά και η αρίθμηση των κόμβων απο 0 ξεκινάει definitely 0 then... Title: Re: [Δομ. Προγρ.] Εργασία C Post by: astakos on May 10, 2009, 11:43:32 am Δεν έχω καταλάβει κάτι , όταν λέει τους κόμβους με τους οποίους συνδέεται άμεσα και τους κόμβους με τους οποίους συνδέεται έμμεσα με τη μεσολάβηση ενός μόνο κόμβου πχ για 10 κόμβους εννοεί τους κόμβους 02 13 24 35 46 57 68 79 και πρέπει να βρούμε εάν συνδέονται έμμεσα η άμεσα?
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Emfanever on May 10, 2009, 13:20:28 pm ότι είναι δίπλα δίπλα δε σημαίνει ότι συνδέονται άμεσα ή έμμεσα. Αυτό το επιλέγεις εσύ στην αρχή του προγράμματος.
Δλδ σε ρωτάει συνδέεται ο 1 με τον 2 άμεσα? συνδέεται ο 1 με τον 3 άμεσα? .... συνδέεται ο 2 με τον 3 άμεσα? κοκ Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Γιώργος on May 10, 2009, 13:24:06 pm Δεν έχω καταλάβει κάτι , όταν λέει τους κόμβους με τους οποίους συνδέεται άμεσα και τους κόμβους με τους οποίους συνδέεται έμμεσα με τη μεσολάβηση ενός μόνο κόμβου πχ για 10 κόμβους εννοεί τους κόμβους 02 13 24 35 46 57 68 79 και πρέπει να βρούμε εάν συνδέονται έμμεσα η άμεσα? Πχ ορίστε ένα testcase που επισυνάπτω στο τέλος του post. Στο συγκεκριμένο:
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ΡΕΣΑΛΤΟ on May 10, 2009, 15:11:48 pm τι ειναι αυτο;
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: ΚΗΜΜΥ on May 10, 2009, 15:18:40 pm ενα παραδειγμα (πολυ καλο) για να πιασουμε τη λογικη και να γραψουμε τπτ... 8)
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: diutinus on May 10, 2009, 19:24:54 pm Να ρωτήσω κάτι τεχνικό, όταν χρησιμοποιώ 1-2 counters (i.e. i και j) και έχω
Code: for(i=0; i<tsoureki; i++){ και μετά θέλω άλλο ένα for-loop, πρέπει να βάλω νέους μετρητές ή μπορώ να ξαναχρησιμοποιήσω τους i και j?? Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Γιώργος on May 10, 2009, 19:45:42 pm Αν το νέο loop θες να είναι εμφωλιασμένο μέσα στο j-loop θα πρέπει να είναι άλλοι counters, όχι τα i και j.
Αν θες να είναι εμφωλιασμένο στο i-loop αλλά εκτός του j-loop, μπορείς να χρησιμοποιήσεις το j αλλά όχι το i. Αν είναι εκτός και του i-loop, βάλε ό,τι θες. :P Title: Re: [Δομ. Προγρ.] Εργασία C Post by: mostel on May 10, 2009, 19:52:09 pm Linear algebra rules! Θεωρία πινάκων (για τους μαθηματικούς) , θεωρία γράφων (για τους προγραμματιστές). http://en.wikipedia.org/wiki/Graph_theory Το συγκεκριμένο λύνεται πάντως και με στοιχειώδη γραμμική άλγεβρα Στέλιος Βασικά πιο χρήσιμο θα ήταν ένα τέτοιο υπό-Link: http://en.wikipedia.org/wiki/Graph_traversal Αλλά θα 'ταν πιο χρήσιμο αν έλεγε να βρουν τους κόμβους σε 2, 3 ή περισσότερα βήματα. Recursion ftw εκεί. :P Πού να βλέπατε την άσκηση με τα γελάδια. :D Δεν είναι τόσο perplexed φάση. Δεν κάνουμε θεωρία αλγορίθμων. Φιλικά, Στέλιος Title: Re: [Δομ. Προγρ.] Εργασία C Post by: diutinus on May 10, 2009, 20:11:03 pm Αν το νέο loop θες να είναι εμφωλιασμένο μέσα στο j-loop θα πρέπει να είναι άλλοι counters, όχι τα i και j. Αν θες να είναι εμφωλιασμένο στο i-loop αλλά εκτός του j-loop, μπορείς να χρησιμοποιήσεις το j αλλά όχι το i. Αν είναι εκτός και του i-loop, βάλε ό,τι θες. :P Ναι, για εκτός έλεγα :) Ευχαριστώ πολύ γιατί μου είχαν σπάσει τα νεύρα να ορίζω νέους μετρητές κάθε φορά!! ;D Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Andre on May 11, 2009, 01:01:38 am Στο παρακάτω loop:
Code: for (i=0;i<N-1;i++){ Code: adj[i][j]=1 Πού μπορεί να είναι το λάθος? Δέχεται κανείς πμ? ^beg^ Title: Re: [Δομ. Προγρ.] Εργασία C Post by: nasia!! on May 11, 2009, 01:04:03 am Άσχετο,η εργασία λέει μέχρι τις 11/05...προφανώς εννοεί μέχρι αύριο,έτσι?αλλιώς άν είναι να την ανεβάσω τώρα χωρίς άλλες διορθωτικές κινήσεις!
@Αndre: Δεν έχω ιδέα γιατί μπορεί να στο βγάζει αυτό! :( (μεταξύ μας,εγώ θα βαζα στο πρώτο loop,από i ;ισο με 0 μέχρι Ν,για να μην "κινδυνεύω" να χάσω καμιά τιμή!) Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Αιμιλία η φτερωτή χελώνα on May 11, 2009, 01:08:44 am ξεκολλα γαμω την παντοφλα μου!
μεχρι τα ξημερωματα της τριτης ανεβαινει! ;D ;D ;D Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Θάνος on May 11, 2009, 02:04:41 am Γιώργο, για το ποστ που έκανες, πώς ακριβώς στην printf βάζουμε να εκτυπώνει στη σειρά (χωρίς να ξέρουμε από πριν) τους αριθμούς πχ 4.5.6 τη μια φορά και 2,3 την άλλη? Εννοώ δεν ξέρεις από πριν αν ο Χ κόμβος συνδέεται με 2, 3, ή 4 κόμβους, πώς το γράφεις αυτό; και επίσης το κάνατε όλο με μία συνάρτηση, ή έχετε και συνάρτηση 2η εκτός της main? thanx!
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: nasia!! on May 11, 2009, 02:08:07 am Εγώ πάντως το κανα με μια συνάρτηση την μαιν,και όσον αφορά αυτό που ρωτάς,πολύ απλά έβαλα το πρόγραμμα να τρέχει με τέτοιον τρόπο,ώστε με το που έβρισκε πως κάποιος κόμβος συνδεέται άμεσα με κάποιον άλλον,να το εκτυπώνει με την μια..και το ίδιο και για την έμμεση σύνδεση κόμβων! :)Και είναι μια χαρά εμφανίσημο πρόγραμμα κατα την εκτέλεση!
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Θάνος on May 11, 2009, 02:13:33 am κι εγώ αυτό που κάνω θα εκτυπώνει κάτι της μορφής:
Ο κόμβος 3 συνδέεται άμεσα με τον κόμβο 4 Συνδέεται έμμεσα με τον κόμβο 5 μέσω του κόμβου 2. Συνδέεται έμμεσα με τον κόμβο 6 μέσω του κόμβου 3 κάτι τέτοιο.. επίσης με if, ή while το έκανες? κάτι παίζει λάθος και δε βγαίνει αποτέλεσμα στο τέλος αλλά θα το παιδέψουμε.. :P Title: Re: [Δομ. Προγρ.] Εργασία C Post by: nasia!! on May 11, 2009, 02:16:27 am κι εγώ αυτό που κάνω θα εκτυπώνει κάτι της μορφής: Ο κόμβος 3 συνδέεται άμεσα με τον κόμβο 4 Ο κόμβος 3 συνδέεται έμμεσα με τον κόμβο 5 μέσω του κόμβου 2. Ο κόμβος 3 συνδέεται έμμεσα με τον κόμβο 6 μέσω του κόμβου 3 οκ εδώ..και μένα έτσι μου εμφανίζεται! 8) όταν μιλάς για while και if,τί εννοείς?σε ποιό μέρος του προγράμμματος?Τί θες να κάνεις ακριβώς και τα βάζεις αυτά? Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Andre on May 11, 2009, 12:45:47 pm Code: for (i=0;i<N-1;i++){ Με το παραπάνω θέτω τιμές στα στοιχεία του πίνακα, αλλά δε γίνεται σωστά. Μάλλον παίζει κάτι με το else αλλά δε μπορώ να βγάλω άκρη. >:( :'( Μήπως μπορεί κάποιος? Emfaaaaaaaaaaaa!!! Title: Re: [Δομ. Προγρ.] Εργασία C Post by: pandora on May 11, 2009, 13:06:43 pm Παιδιά σήμερα το βράδυ είναι η προθεσμία?
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: patoho on May 11, 2009, 13:09:47 pm νεπ...
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: diutinus on May 11, 2009, 17:35:36 pm Code: for (i=0;i<N-1;i++){ Με το παραπάνω θέτω τιμές στα στοιχεία του πίνακα, αλλά δε γίνεται σωστά. Μάλλον παίζει κάτι με το else αλλά δε μπορώ να βγάλω άκρη. >:( :'( Μήπως μπορεί κάποιος? Emfaaaaaaaaaaaa!!! 1. To printf σου πρέπει να είναι κάπως έτσι: Code: printf("%s%d%s%d%s","Syndeetai o ",i," me ton ",j," ?"); 2. Για το scanf θες μεταβλητή τύπου char διότι δίνεις ένα γράμμα δλδ Code: scanf(" %c",&s); Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Emfanever on May 11, 2009, 18:55:30 pm Code: for (i=0;i<N-1;i++){ Με το παραπάνω θέτω τιμές στα στοιχεία του πίνακα, αλλά δε γίνεται σωστά. Μάλλον παίζει κάτι με το else αλλά δε μπορώ να βγάλω άκρη. >:( :'( Μήπως μπορεί κάποιος? Emfaaaaaaaaaaaa!!! 1. To printf σου πρέπει να είναι κάπως έτσι: Code: printf("%s%d%s%d%s","Syndeetai o ",i," me ton ",j," ?"); 2. Για το scanf θες μεταβλητή τύπου char διότι δίνεις ένα γράμμα δλδ Code: scanf(" %c",&s); 1. Σορρυ αν έχω χάσει επεισόδια, αλλά από πότε έγινε της μόδας αυτός ο τρόπος γραφής του printf ? Γιατί μου φαίνεται ηλίθιος. Το κάνει κάποιος καθηγητής? Καλά το έγραψε ο Andre. Γράφεις όλο το κείμενο μέσα σε "" βάζοντας %d, %f κτλ όπου χρειάζεται, και στο τέλος βάζεις με τη σειρά που εμφανίζονται τις μεταβλητές. Αποφεύγεται έτσι το μπέρδεμα και τα 1 εκατομμύριο %s που είναι περιττά. 2. Στο κομμάτι κώδικα που πόσταρε ο Andre δε συγκρίνει το s με char αλλά με int, αρά σωστά το έγραψε %d Title: Re: [Δομ. Προγρ.] Εργασία C Post by: babis2 on May 11, 2009, 22:32:26 pm αααα... έχω πρόβλημα μεγάλο... ^band^ 8)
έχω φτάσει στο σημείο όπου ο χρήστης δηλώνει αν συνδεέονται άμεσα ή έμμεσα οι κόμβοι... τώρα λογικά πρέπει να εκτυπώσω πως συνδεοντε οι κομβοι.... 1ο πρόβλημα... μετά την εισαγώγη του χρήστη για το πώς συνδεέοντε κλείνει το πρόγραμμα -.- 2ον.... Πώς θα τα εκτυπώσω τώρα.. σκέφτομαι 8) για Code: printf("O %d kombos sundeetai amesa me ton %d kombo k emesa me ton %d",i,adj[i][j]=1,adj[i][j]=0); αλλά μαλακ.. μου φαίνεται :D Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Andre on May 13, 2009, 11:20:21 am Γιατί δεν έχει ακόμη ανεβάσει τη λύση στο ethmmy?
Πάντα τις ανεβάζει έτσι? Title: Re: [Δομ. Προγρ.] Εργασία C Post by: El Niño on May 13, 2009, 12:13:49 pm ε θα τις ανεβασει λογικα !!!
Title: Re: [Δομ. Προγρ.] Εργασία C Post by: Kaelthas on May 13, 2009, 12:52:10 pm Γιατί δεν έχει ακόμη ανεβάσει τη λύση στο ethmmy? Πάντα τις ανεβάζει έτσι? Κάτσε πολύ βιάζεσαι.... πρωτα πρέπει να καταλάβει τι ζητουσε ο ιδιος!!! ;D |