THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: THE INCREDIBLE HULK on February 25, 2014, 18:12:16 pm



Title: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: THE INCREDIBLE HULK on February 25, 2014, 18:12:16 pm
 Σχόλια,απορίες κτλ. σε παλιά θέματα για τον Δομημένο Προγραμματισμό. 


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: dalexiok on June 19, 2014, 12:02:16 pm
https://www.thmmy.gr/smf/index.php?action=tpmod;dl=cat33

Εδώ θα βρείτε παλιά θέματα


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Kthulu on February 01, 2015, 23:45:59 pm
Ιουνιος 2014 ομαδα Α: Για το 3ο θεμα έχει κανείς να συγκρίνουμε αποτελέσματα;
1
4
6
4


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Vlassis on February 01, 2015, 23:48:12 pm
Ιουνιος 2014 ομαδα Α: Για το 3ο θεμα έχει κανείς να συγκρίνουμε αποτελέσματα;
1
4
6
4
Γιατι δεν το κανεις ενα compile στο pc σου για να σαι σιγουρος?  :P


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: iokasti on February 02, 2015, 03:16:45 am
Ιουνιος 2014 ομαδα Α: Για το 3ο θεμα έχει κανείς να συγκρίνουμε αποτελέσματα;
1
4
6
4

Νομίζω πως το αποτέλεσμα είναι
1
4
6
15
Γτ στην τελευταία κλήση της συνάρτησης πάει στο σωστό case αλλά επειδή σε αυτό δεν υπάρχει break πάει κ στο επόμενο case!! Ας επιβεβαιώσει κάποιος για την εξήγηση!! ::)


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: iokasti on February 02, 2015, 03:23:40 am
Στο 3ο θέμα του Οκτ του '12  τρέχοντας το πρόγραμμα το n στο τελευταίο print μου βγήκε 4 ενώ με τη λογική το βγάζω 8 :'( μπορεί κάποιος να βοηθήσει;;;  :o :o


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Vlassis on February 02, 2015, 19:51:32 pm
Στο 3ο θέμα του Οκτ του '12  τρέχοντας το πρόγραμμα το n στο τελευταίο print μου βγήκε 4 ενώ με τη λογική το βγάζω 8 :'( μπορεί κάποιος να βοηθήσει;;;  :o :o
μηπως η τιμη του n που περνας με αναφορα αλλαζει μονο οταν το χρησιμοποιεις μεσα στην συναρτηση με το *k, και οχι με σκετο k, και με την εντολη k=&x αλλαζει απλα η τιμη k που επιστρεφεται στο t ;  :)


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: iokasti on February 02, 2015, 21:04:32 pm
Στο 3ο θέμα του Οκτ του '12  τρέχοντας το πρόγραμμα το n στο τελευταίο print μου βγήκε 4 ενώ με τη λογική το βγάζω 8 :'( μπορεί κάποιος να βοηθήσει;;;  :o :o
μηπως η τιμη του n που περνας με αναφορα αλλαζει μονο οταν το χρησιμοποιεις μεσα στην συναρτηση με το *k, και οχι με σκετο k, και με την εντολη k=&x αλλαζει απλα η τιμη k που επιστρεφεται στο t ;  :)
Η αλήθεια είναι οτι αυτό με μπερδεύει!! Φαντάστηκα πως ισως κάτι τέτοιο γίνεται.. Αλλά αν ο pointer k (στην ουσία δλδ η διεύθυνση του n) παίρνει τη διεύθυνση του x που έχει τιμή 8 π :-[ώς γίνεται να μην αλλάζει κ η τιμή του n?;;


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Kthulu on February 02, 2015, 23:22:37 pm
Ιουνιος 2014 ομαδα Α: Για το 3ο θεμα έχει κανείς να συγκρίνουμε αποτελέσματα;
1
4
6
4

Νομίζω πως το αποτέλεσμα είναι
1
4
6
15
Γτ στην τελευταία κλήση της συνάρτησης πάει στο σωστό case αλλά επειδή σε αυτό δεν υπάρχει break πάει κ στο επόμενο case!! Ας επιβεβαιώσει κάποιος για την εξήγηση!! ::)

Μπορεις να μου εξηγήσεις βήμα βήμα την τελευταία κλήση της συνάρτησης; γτ οπως τ λες τ κανω αλλα εκει κολάω


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Vlassis on February 03, 2015, 00:50:56 am
Στο 3ο θέμα του Οκτ του '12  τρέχοντας το πρόγραμμα το n στο τελευταίο print μου βγήκε 4 ενώ με τη λογική το βγάζω 8 :'( μπορεί κάποιος να βοηθήσει;;;  :o :o
μηπως η τιμη του n που περνας με αναφορα αλλαζει μονο οταν το χρησιμοποιεις μεσα στην συναρτηση με το *k, και οχι με σκετο k, και με την εντολη k=&x αλλαζει απλα η τιμη k που επιστρεφεται στο t ;  :)
Η αλήθεια είναι οτι αυτό με μπερδεύει!! Φαντάστηκα πως ισως κάτι τέτοιο γίνεται.. Αλλά αν ο pointer k (στην ουσία δλδ η διεύθυνση του n) παίρνει τη διεύθυνση του x που έχει τιμή 8 π :-[ώς γίνεται να μην αλλάζει κ η τιμή του n?;;
ελα μου ντε..και γω στην αρχη 8 το εβγαζα οπως το ελεγες, και αυτο ειναι το μονο που φανταστηκα, αλλα δεν μπορω να καταλαβω γιατι συμβαινει..  :???:


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: iokasti on February 03, 2015, 15:32:29 pm
Ιουνιος 2014 ομαδα Α: Για το 3ο θεμα έχει κανείς να συγκρίνουμε αποτελέσματα;
1
4
6
4

Νομίζω πως το αποτέλεσμα είναι
1
4
6
15
Γτ στην τελευταία κλήση της συνάρτησης πάει στο σωστό case αλλά επειδή σε αυτό δεν υπάρχει break πάει κ στο επόμενο case!! Ας επιβεβαιώσει κάποιος για την εξήγηση!! ::)

Μπορεις να μου εξηγήσεις βήμα βήμα την τελευταία κλήση της συνάρτησης; γτ οπως τ λες τ κανω αλλα εκει κολάω

Πριν την τελευταία επανάληψη το m έχει γίνει 6 άρα όταν καλείται η συνάρτηση πάει στο case m=6. Εκεί κάνει το t[1] ίσο με 7 και το m=6+7=13. Δεν υπάρχει break άρα συνεχίζει στο επόμενο case όπου κάνει το m=13+2=15 και αυτό επιστρέφει! Αυτό νομίζω πως κάνει!


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: iokasti on February 03, 2015, 16:11:05 pm
Έχει κάνει κανείς το δεύτερο πρόγραμμα του Ιουνίου ´14;  ::)


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: entropia on February 04, 2015, 12:17:24 pm
Καλημέρα παιδιά. Μήπως μπορεί κάποιος να ανεβάσει τα θέματα του Σεπτέμβρη '14;
Ευχαριστώ


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Kthulu on February 04, 2015, 13:53:07 pm
Ιουνιος 2014 ομαδα Α: Για το 3ο θεμα έχει κανείς να συγκρίνουμε αποτελέσματα;
1
4
6
4

Νομίζω πως το αποτέλεσμα είναι
1
4
6
15
Γτ στην τελευταία κλήση της συνάρτησης πάει στο σωστό case αλλά επειδή σε αυτό δεν υπάρχει break πάει κ στο επόμενο case!! Ας επιβεβαιώσει κάποιος για την εξήγηση!! ::)

Μπορεις να μου εξηγήσεις βήμα βήμα την τελευταία κλήση της συνάρτησης; γτ οπως τ λες τ κανω αλλα εκει κολάω

Πριν την τελευταία επανάληψη το m έχει γίνει 6 άρα όταν καλείται η συνάρτηση πάει στο case m=6. Εκεί κάνει το t[1] ίσο με 7 και το m=6+7=13. Δεν υπάρχει break άρα συνεχίζει στο επόμενο case όπου κάνει το m=13+2=15 και αυτό επιστρέφει! Αυτό νομίζω πως κάνει!
Άρα εσύ λες πως θ μπει στο case 4. Μα αφού η τιμου του m ειναι 13 πως μπαινει στο case 4;


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: seamade on February 04, 2015, 14:17:52 pm
Ιουνιος 2014 ομαδα Α: Για το 3ο θεμα έχει κανείς να συγκρίνουμε αποτελέσματα;
1
4
6
4

Νομίζω πως το αποτέλεσμα είναι
1
4
6
15
Γτ στην τελευταία κλήση της συνάρτησης πάει στο σωστό case αλλά επειδή σε αυτό δεν υπάρχει break πάει κ στο επόμενο case!! Ας επιβεβαιώσει κάποιος για την εξήγηση!! ::)

Μπορεις να μου εξηγήσεις βήμα βήμα την τελευταία κλήση της συνάρτησης; γτ οπως τ λες τ κανω αλλα εκει κολάω

Πριν την τελευταία επανάληψη το m έχει γίνει 6 άρα όταν καλείται η συνάρτηση πάει στο case m=6. Εκεί κάνει το t[1] ίσο με 7 και το m=6+7=13. Δεν υπάρχει break άρα συνεχίζει στο επόμενο case όπου κάνει το m=13+2=15 και αυτό επιστρέφει! Αυτό νομίζω πως κάνει!
Άρα εσύ λες πως θ μπει στο case 4. Μα αφού η τιμου του m ειναι 13 πως μπαινει στο case 4;
Μπαινει στο case 4 γιατι στο case 6 δεν εχει break ή return ή κατι τετοιο


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: iokasti on February 04, 2015, 14:35:04 pm
Ιουνιος 2014 ομαδα Α: Για το 3ο θεμα έχει κανείς να συγκρίνουμε αποτελέσματα;
1
4
6
4

Νομίζω πως το αποτέλεσμα είναι
1
4
6
15
Γτ στην τελευταία κλήση της συνάρτησης πάει στο σωστό case αλλά επειδή σε αυτό δεν υπάρχει break πάει κ στο επόμενο case!! Ας επιβεβαιώσει κάποιος για την εξήγηση!! ::)

Μπορεις να μου εξηγήσεις βήμα βήμα την τελευταία κλήση της συνάρτησης; γτ οπως τ λες τ κανω αλλα εκει κολάω

Πριν την τελευταία επανάληψη το m έχει γίνει 6 άρα όταν καλείται η συνάρτηση πάει στο case m=6. Εκεί κάνει το t[1] ίσο με 7 και το m=6+7=13. Δεν υπάρχει break άρα συνεχίζει στο επόμενο case όπου κάνει το m=13+2=15 και αυτό επιστρέφει! Αυτό νομίζω πως κάνει!
Άρα εσύ λες πως θ μπει στο case 4. Μα αφού η τιμου του m ειναι 13 πως μπαινει στο case 4;
Μπαινει στο case 4 γιατι στο case 6 δεν εχει break ή return ή κατι τετοιο

Στις σημειώσεις του Κορτέση για τη switch λέει: η μεταφορά της εκτέλεσης του προγράμματος σε μια case θα έχει ως συνέπεια να εκτελεστούν όλες οι ομάδες που ακολουθούν ακόμα κι αν ανήκουν σε διαφορετικές case η και στην περίπτωση της ετικέτας default. Αν θελουμε να αποφuγουμε κάτι τέτοιο πρέπει στο σημείο που μας ενδιαφέρει να εισάγουμε την εντολή break.


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: George_RT on June 04, 2015, 19:11:20 pm
Έχει λύσει κάποιος το 2 θέμα του Ιουνίου του 2014 ; , αυτό με την αναζήτηση πως γίνεται ;


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: mprizakias on June 04, 2015, 20:39:31 pm
Έχει λύσει κάποιος το 2 θέμα του Ιουνίου του 2014 ; , αυτό με την αναζήτηση πως γίνεται ;

Μπορεις να ορίσεις ενα struct οπου θα εχει σαν μεταβλητες ολα τα στοιχεια του σεισμου και να το "δηλωσεις" δυο φορες π.χ.
Code:
struct earthquake 
{
//mpla mpla mpla
};
struct earthquake earth;
struct earthquake earth_min;
Θα χρησιμοποιήσεις το struct earth για την εγγραφή των δεδομένων στο αρχειο, υστερα αφου δωσεις αρχικα στην earth_min τις τιμές της πρώτης εγγραφής διαβάζεις τις υπόλοιπες τιμές μέσα σε μία
Code:
while ( !feof(fp) )
με χρήση του earth και τις συγκρίνεις με το earth_min
Code:
if(earth.size < earth_min.size)
{
//Εστω size η μεταβλητη της εντασης του σεισμου
earth_min = earth; //δεν ειμαι σιγουρος οτι δουλευει αυτη η αναθεση
}
Στο τέλος της διαδικασίας το earth_min θα έχει τα στοιχεία του μικρότερου σεισμού.  8))


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: George_RT on June 05, 2015, 19:14:42 pm
Έχει λύσει κάποιος το 2 θέμα του Ιουνίου του 2014 ; , αυτό με την αναζήτηση πως γίνεται ;

Μπορεις να ορίσεις ενα struct οπου θα εχει σαν μεταβλητες ολα τα στοιχεια του σεισμου και να το "δηλωσεις" δυο φορες π.χ.
Code:
struct earthquake 
{
//mpla mpla mpla
};
struct earthquake earth;
struct earthquake earth_min;
Θα χρησιμοποιήσεις το struct earth για την εγγραφή των δεδομένων στο αρχειο, υστερα αφου δωσεις αρχικα στην earth_min τις τιμές της πρώτης εγγραφής διαβάζεις τις υπόλοιπες τιμές μέσα σε μία
Code:
while ( !feof(fp) )
με χρήση του earth και τις συγκρίνεις με το earth_min
Code:
if(earth.size < earth_min.size)
{
//Εστω size η μεταβλητη της εντασης του σεισμου
earth_min = earth; //δεν ειμαι σιγουρος οτι δουλευει αυτη η αναθεση
}
Στο τέλος της διαδικασίας το earth_min θα έχει τα στοιχεία του μικρότερου σεισμού.  8))

Κάπως έτσι το σκεπτόμουν απλά το πρόβλημα μου είναι οτι μέσα στο αρχείο θα υπάρχουν το n το μέγεθος του σεισμού και η ημερομηνία όποτε πως θα βγάλει άκρη ποιους αριθμούς να συγκρίνει ;




Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: mprizakias on June 05, 2015, 19:32:06 pm
Κάπως έτσι το σκεπτόμουν απλά το πρόβλημα μου είναι οτι μέσα στο αρχείο θα υπάρχουν το n το μέγεθος του σεισμού και η ημερομηνία όποτε πως θα βγάλει άκρη ποιους αριθμούς να συγκρίνει ;


Γι'αυτο χρησιμοποιεις structs και δεν γράφεις τις μεταβλητες μια-μια, οταν διαβαζει το struct απο το αρχειο αντιστοιχίζει τις τιμές με τις μεταβλητές που εχουν οριστεί στο struct (εννοείται πως χρησιμοποιείς το ίδιο struct κατα την εγγραφή των δεδομένων), έτσι όταν του λες σύγκρινε την  
Code:
earth[b].size[/b] < earth_min[b].size[/b])
όπου size θα είναι η μεταβλητή του struct για την ένταση του σεισμου θα συγκρίνει την προσωρινή ελάχιστη τιμή του μεγέθους που έχει η earth_min με την τρέχουσα τιμή της earth.


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: squawker on June 16, 2015, 15:10:47 pm
στο θέμα του ιουνίου 2014 στο τελευταίο θέμα πως πρέπει να είναι η δομή της απάντησης; τι εννοεί να γράψετε στο εσωτερικό πλαισίου;


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: bsp on June 16, 2015, 16:13:32 pm
Αν θυμάμαι καλά απλά θέλει να γράψεις σε ένα πινακάκι τι εκτυπώνει το πρόγραμμα και μετά να το αιτιολογήσεις


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: rspappas on June 16, 2015, 16:52:49 pm
ειναι κλασσικο θεμα αυτο, πρεπει να γραψετε ακριβως τι θα εμφανιστει στον υπολογιστη/κονσολα οταν εκτελεστει ο κωδικας που δινεται.

ο καλυτερος τροπος για να επιβεβαιωσετε τις απαντησεις σας, τωρα που διαβαζετε, ειναι να το εκτελεσετε!


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: mprizakias on June 17, 2015, 17:13:50 pm
Τελικα για το 3ο θεμα δεν ζητάει μόνο τις τιμές σε πινακάκι αλλα και αναλυτική δικαιολόγηση, δηλαδη να του πεις τι κανει το προγραμμα γραμμη-γραμμη.


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: ANDREAMK on September 08, 2015, 11:58:52 am
if (!n) και m+=(t+1);
τι σημαίνουν αυτές οι εντολές?


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: ANDREAMK on September 08, 2015, 12:00:27 pm
if (!n) και m+=(t+1);
τι σημαίνουν αυτές οι εντολές?
επίσης στο m=(k>3)+3??


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: lady_of_winter on September 08, 2015, 12:11:20 pm
λοιπον
1)m=(k>3)+1
  πρώτα ελέγχει την ανισότητα αν ισχύει τότε m=1+1, αν δεν ισχύει m=0
  γιάτι το αποτέλεσμα του ελέγχου της ανισότητας σου δίνει 1 αν είναι True κ 0 αν είναι False
2) m+=(t+1) είναι το ίδιο με το m=m+(t+1)
3)if(!n) για αυτό δεν είμαι πoλυ σίγουρη
   ουσιαστικά το ! είναι το διάφορο
   και το if ελέγχει αν η τιμή μέσα είναι 0 η 1
   επομένως αν έχεις n=0 τότε με το ! γίνεται 1 άρα μπαίνεις στην if
   αλλιώς αν έχεις κάποιον άλλον αριθμό τότε με το ! γίνεται 0 άρα δεν μπαίνεις στην if

δοκίμασε πάντως να γράψεις κώδικα και να τον τρέξεις κ να δεις τι σου εμφανίζει σε κάθε περίπτωση


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: claus on September 08, 2015, 12:15:07 pm

3) το if ελέγχει αν η τιμή μέσα είναι 0 η 1
επομένως αν έχεις n=0 τότε με το ! γίνεται 1 άρα μπαίνεις στην if
αλλιώς αν έχεις κάποιον άλλον αριθμό τότε με το ! γίνεται 0 άρα δεν μπαίνεις στην if

Αυτό είναι..


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: ANDREAMK on September 08, 2015, 12:18:52 pm
να στε καλά παιδιά μου! Μπορεί κάποιος να μου εξηγήσει ακριβώς πως τρέχει το 3ο θέμα του Ιουνίου 14? Ειδικά τι συμβαίνει εκεί στο If (!n)????


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: ANDREAMK on September 08, 2015, 12:22:25 pm

3) το if ελέγχει αν η τιμή μέσα είναι 0 η 1
επομένως αν έχεις n=0 τότε με το ! γίνεται 1 άρα μπαίνεις στην if
αλλιώς αν έχεις κάποιον άλλον αριθμό τότε με το ! γίνεται 0 άρα δεν μπαίνεις στην if

Αυτό είναι..
Στο 3 του Ιουνίου 14, αν είναι έτσι τότε δεν θα παίρνει τιμή το m για i=1,2,3ktl έτσι δν είναι?


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: claus on September 08, 2015, 12:38:17 pm
να στε καλά παιδιά μου! Μπορεί κάποιος να μου εξηγήσει ακριβώς πως τρέχει το 3ο θέμα του Ιουνίου 14? Ειδικά τι συμβαίνει εκεί στο If (!n)????
1) Πας απευθείας στη main
2) Πρωτη επανάληψη i=0,k=7
3) Καλείς την fun όπου στο n αντιστοιχιζεται το i και στο k το k της main.
4) static μεταβλητές σημαίνει ότι οταν βγεις απο την συνάρτηση και την καλέσεις αργοτερα αυτές ι μεταβλητές θα εχουν τις τιμές που ειχαν ην τελευταια φορα που ησουν μεσα.
5) Τωρα που το i (δλδ το n) ειναι μηδεν το !n ειναι 1 και εκτελείται η if αφου είναι true η παρένθεση.
6) m=n(=i)=0 και ολα τα στοιχεια του πινακα t γινονται μηδεν.
7) H switch δεν εχει case 0 οποτε προχωρας και εκτελεις το default m%=5=>m=0 (υπολοιπο διαιρεσης του 0 με το 5) και m++ (m=0+1=1)
8) η τιμη του m που επιστρέφεται ειναι m=1 η οποια και τυπωνεται στην οθονη.
9) Συνεχιζεις για i=1 κοκ...


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: mfilip on September 08, 2015, 14:27:42 pm
παιδια αμα λυσει κανεις οποιοδηποτε 3ο θεμα απο αυτα που υπαρχουν ηδη εδω, ας κανει ενα κοπο να ανεβασει τ αποτελεσματα να συγκρινουμε. καποια δε μου τρεχουν, πετανε errors κτλ, δεν εχω χρονο για να το ψαξω περαιτερω, οποτε μονη εναλλακτικη η συγκριση


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: heavy melon on September 08, 2015, 18:45:38 pm
έχει κανείς τη φετινή εργασία F του Κορτέση σε μη ακαταλαβίστικη μορφή?
στο ethmmy έχει ανέβει με λίγο @@κωδικοποίηση


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: jimPster on September 08, 2015, 19:02:31 pm
ανοιξε το με browser και αλλαξε text encoding σε ελληνικα (αν δεν μπορεις να το ανοιξεις με browser
μετετρεψε το σε .txt)


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: giannop on September 08, 2015, 19:06:51 pm
Μπορει να ανεβασει καποιος τη λυση απο το θεμα 2 του 2014 ή καποιο αντιστοιχης λογικης??


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: ANDREAMK on September 08, 2015, 19:11:38 pm
και απο το θέμα πρώτο δεν μας χαλάει!  :D :D :D


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: heavy melon on September 08, 2015, 19:13:28 pm
ανοιξε το με browser και αλλαξε text encoding σε ελληνικα (αν δεν μπορεις να το ανοιξεις με browser
μετετρεψε το σε .txt)

θενκ γιου!

στην ιδια ασκηση, ο λογος που χρησιμοποιει return; αντι για exit(1)(2)...κτλ οπως στις σημειωσεις του;
(για τον ελεγχο στη malloc εννοω)


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: mfilip on September 09, 2015, 00:09:04 am
σεπτεμβριος 2012 θεμα 3 κανεις? το m προκυπτει απο καπου?


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: TheoProt on January 17, 2017, 15:14:25 pm
Στα θέματα του Ιουνίου 2016 στο 3ο θέμα θέλει απλά να χρησιμοποίησουμε έναν δείκτη σε διδιάστατο πίνακα ;
Και στο 4ο θέμα η συνάρτηση που ζητάει τι ακριβώς πρέπει να κάνει ; Θέλει απλά μια σειρά από if ή είναι κάτι πιο σύνθετο που δεν καταλαβαίνω ;

EDIT: moved , λιγη προσοχη που γραφετε


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Todo on January 19, 2018, 18:43:33 pm
εχει καποιος την λυση απο θεμα 3 Ιουνιος 2017;;


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Badboy on January 20, 2018, 13:17:33 pm
εχει κανεις τη λυση για το θεμα 1ο 2010;


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: AstralWind on January 20, 2018, 17:45:11 pm
Ανεβαζω λυση για θεμα 2 ιουνιου του 16 που ενδεχομενως εχει λαθη οποιος ειναι γνωστης ας διορθωσει μην παρω κανεναν στο λαιμο μου

Θα ανεβασω λυσεις και για θεμα 3 πιο μετα


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: s0r0n on January 21, 2018, 13:46:59 pm
Στην ερωτηση ποιο ειναι το βασικο μοντελο των WEB Services,μπορει να μου καποιος πως το απανταμε? Φανταζομαι θελει την ερμηνεια της εικονας στις σημειωσεις,αλλα δεν ειμαι σιγουρος στο πως να θεσω την απαντηση.


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Τζιτζίς on January 21, 2018, 18:37:14 pm
εχει καποιος την λυση απο θεμα 3 Ιουνιος 2017;;

bump

μαγκες αν την εχει καποιος ανεβαστε την πλιζ γιατι εχω κολλησει και γω εκει απο χθες το βραδυ


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: MrRobot on January 21, 2018, 19:01:33 pm
Ρε παιδιά το θέμα λέει και το όνομα του αλγορίθμου, ψαξτε το στο ιντερνετ.

Εδώ (https://www.geeksforgeeks.org/quick-sort/) έχει ωραία υλοποίηση και εξηγεί και πως δουλεύει η quicksort. Βέβαια δεν επιλέγει τυχαία τον αριθμό αλλα νομίζω δεν είναι αυτή η δυσκολία του θέματος.

Επίσης σε τέτοια θέματα είναι χρήσιμο να κάνενε ένα παράδειγμα στο χαρτί για να καταλάβαιτε τι παίζει, μέχρι που θα πρέπει να τρεχουν τα for σας κτλ.


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Τζιτζίς on January 21, 2018, 19:33:47 pm
Ευχαριστούμε πολύ! Αλλά... εγώ βασικά μπερδεύτηκα  :P Εννοούσα το θέμα Γ του ΦΛΕΒΑΡΗ του '17, αλλά βιάστηκα. Οπότε, αν κάποιος έχει την λύση και σε αυτό θα ήμουν ευγνώμων,  γιατι δεν βγαζω ακρη.


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: AstralWind on January 21, 2018, 20:46:17 pm
Νομιζω οτι ειναι αρκετα παρομοια με του ιουνιου του 16 που υπαρχει λυμενη.
Η βασικη διαφορα ειναι οτι εδω περα εχεις μια δομη-πινακα που θα εχει τοσα στοιχεια οσα και οι αγωνες μιας αγωνιστικης και θα δηλωνεται δυναμικα
Δηλαδη θα δηλωσεις αρχικα τη δομη σου κανονικα με ονομα πχ players και μεσα στη main αφου ο χρηστης εισαγει τον αριθμο των αγωνων n:
struct players *games
games = (struct players *)malloc(n*sizeof(struct players));

το οποίο δημιουργει ενα πινακα μεγεθους n που καθε στοιχειο του ειναι μια δομη τυπου players
Ε και μετα μοιαζει αρκετα με το θεμα του 16


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: panos98 on September 11, 2018, 21:51:54 pm
αν τρεξετε αυτον τον κωδικο το τελευταιο γραμμα της συμβολοσειρα ειανι ενα Ε ...ΠΩΣ προκυπτει ομως αυτο το Ε εφοσον δεν υπαρχει στον πινακα;
#include<stdio.h>
int main(void){
   char *arr[]={"A","B","C","D"};
   char **p;
   p=arr;
   printf("%s",*++p);
   printf("%s",*++p+2);
   printf("%c\n",**++p+1);
}


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Spiro on September 11, 2018, 22:21:07 pm
Σου διαφεύγει το γεγονός ότι οι μεταβλητές τύπου char αποθηκεύονται στην μνήμη ως ακέραιοι βάσει του προτύπου ASCII. Στην περίπτωση της εκτύπωσης του 'E', ο δείκτης δείχνει στην +1 θέση μετά το 'D', η οποία +1 θέση στην πραγματικότητα είναι (θέση του('D') + sizeof(char)) = θέση του('Ε').


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: panos98 on September 11, 2018, 22:48:55 pm
Οχι απλα μου διαφευγει ....ιδεα δεν εχω :D :D να σε καλα


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: The Audacious AI on September 11, 2018, 22:59:08 pm
Οχι απλα μου διαφευγει ....ιδεα δεν εχω :D :D να σε καλα

Αν σε παρηγορεί ο Πιτσούλης είπε πως το έκαναν σωστά αυτό μόνο 3 άτομα...


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Amethyst on September 12, 2018, 00:13:18 am
Σου διαφεύγει το γεγονός ότι οι μεταβλητές τύπου char αποθηκεύονται στην μνήμη ως ακέραιοι βάσει του προτύπου ASCII. Στην περίπτωση της εκτύπωσης του 'E', ο δείκτης δείχνει στην +1 θέση μετά το 'D', η οποία +1 θέση στην πραγματικότητα είναι (θέση του('D') + sizeof(char)) = θέση του('Ε').

Βασικά, οι μεταβλητές char είναι ακέραιοι αριθμοί του ενός byte και μπορούν χωρίς κανενα περιορισμό να χρησιμοποιηθούν με τον ίδιο τρόπο όπως οι int (προφανώς με μικρότερο εύρος τιμών). Απλά, εφόσον χρησιμοποιούμε στο printf το %c, ο μεταγλωτιστής καταλαβαίνει οτι αντί για τον αριθμό πρέπει να εκτυπώσει τον αντίστοιχο χαρακτήρα που βρίσκεται στην θέση με αυτόν τον αριθμό στον πίνακα ASCII. Τώρα, όταν ο δείκτης δείχνει στο 'D', και στην συνέχεια αυτή η τιμή αυξάνεται κατά 1, τότε αυτομάτως εκυπώνεται ο επόμενος χαρακτήρας του πινακα ASCII, που για ευνόητοους λόγους είναι το 'E'. Επιπλέον, εκτυπώνεται το 'E', διότι ο τελεστής ++ βρίσκεται πριν τον τελεστέο του, οπότε η προσαύξηση συμβαίνει πριν την εκτύπωση του χαρακτήρα.

(Βασικά ότι είπε και ο Spiro, απλά διαφωνώ λιγάκι με την διατύπωση)

Αν σε παρηγορεί ο Πιτσούλης είπε πως το έκαναν σωστά αυτό μόνο 3 άτομα...

Ένας από τους τρεις εδωω  ;D


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: panos98 on September 12, 2018, 00:55:44 am
Ωραια κανα αλλο πονηρο εχουμε?


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Amethyst on September 12, 2018, 14:35:07 pm
Πονηρό είναι ό,τι έχει να κάνει με pointers, προτεραιότητες τελεστών, μικρολεπτομέρειες (όπως %d αντί για %f και τέτοια...). Για αυτά θεωρώ ότι το νο. 1 είναι να διαβάζεις ΠΟΛΥ ΚΑΛΑ την εκφώνηση. Ξέρω ότι έχεις βαρεθεί να το ακούς, αλλά είναι αλήθεια ότι πολλοί την πληρώνουν γιατί ήταν βιαστικοί στην εκφώνηση.

Βασικά βέβαια δεν είναι εάν υπάρχει κάτι πονηρό, για να το διαβάσεις. Σημασία έχει να το έχεις δει κάπου, να ξέρεις πώς δουλεύει, γιατί εάν δεν το έχεις ξαναδεί στην ζωή σου, δεν υπάρχει ούτε μια στο εκατομμύριο περίπτωση να το κάνεις τυχαία σωστά εκείνη την στιγμή, με το άγχος της εξέτασης. Δυστυχώς, ο προγραμματισμός έχει πολλά πράγματα που δεν παίζει να έχει δει κανείς στο πρώτο εξάμηνο, οπότε βασικά είναι θέμα καθηγητή να βάλει κάτι που έχει διδάξει, έστω και υποτυπωδώς.

Δεν θέλω να σε αποθαρρύνω, αλλά δυστυχώς έτσι είναι. Θέλω να πιστεύω πως ο Πιτσούλης δεν θα κάνει καμιά βλακεία, γιατί φαίνεται αρκετά σοβαρός καθηγητής. Αλλά πχ το Θέμα με την συμβολοσειρά και το 'Ε' του Ιανουαρίου ήταν λίγο φευγάτο. Τουλάχιστον όμως, η πλειοψηφία των θεμάτων είναι βατά και αν διάβαζες και έχεις ασχοληθεί με την C  δεν θα έχεις πρόβλημα να περάσεις το μάθημα.


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Spiro on September 13, 2018, 10:28:33 am
Αφήνω αυτό εδώ. Δεν γνωρίζω αν έχει πέσει ως θέμα εξετάσεων. Μου έφαγε κάμποση ώρα μέχρι να το λύσω. Ίσως φανεί χρήσιμο, αν και είναι πολύ τραβηγμένο παράδειγμα. Πιθανόν να υπάρχουν και άλλες (ευκολότερες ή δυσκολότερες) λύσεις.

Είναι το πρόβλημα όπου θέλω να περάσω ως όρισμα σε μια συνάρτηση έναν pointer to pointer (**) ο οποίος θα δείχνει σε έναν 2-Δ πίνακα και στη συνέχεια θα θέλω να κάνω κάποια επεξεργασία στον πίνακα.

Στη main βάζω τα εξής (δημιουργώ δηλαδή πρώτα έναν πίνακα δεικτών κι έπειτα ορίζω ένα pointer to pointer):

    int pinakas[N][M];
    int *p_arr[N];
    int **ptr2arr;
    int i;

    ptr2arr = (int **)p_arr;

    for (i=0; i<N; i++)
      p_arr [ i ] = (int*)pinakas + i*M;
     
   
Στη συνέχεια μπορώ να διοχετεύσω τον ptr2arr ως όρισμα σε μια συνάρτηση (type) myfunc(....,int ** x,...) ( π.χ. myfunc(...,ptr2arr,...); ) και στη συνέχεια σε πιθανή κλήση της scanf να αναφέρομαι στο κελί ij ως &x [ i ] [ j ].
 





Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Ούγκι on September 13, 2018, 12:17:47 pm
Η υλη ειναι ανεβασμενη πουθενα;


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Singularity on September 13, 2018, 12:32:34 pm
Η υλη ειναι ανεβασμενη πουθενα;

https://elearning.auth.gr/course/view.php?id=10458


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Ούγκι on September 13, 2018, 13:18:35 pm
https://elearning.auth.gr/course/view.php?id=10458

Αυτό είναι το θέμα. Στις πληροφορίες μαθήματος αναφέρει πράγματα που δεν περιέχει το υλικό μαθήματος πχ pointer σε συναρτήσεις, ενώσεις, πεδία bit.

Τι από τα δύο να εμπιστευτούμε...
sent from mTHMMY (https://play.google.com/store/apps/details?id=gr.thmmy.mthmmy)


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Spiro on September 13, 2018, 13:32:14 pm
Αυτό είναι το θέμα. Στις πληροφορίες μαθήματος αναφέρει πράγματα που δεν περιέχει το υλικό μαθήματος πχ pointer σε συναρτήσεις, ενώσεις, πεδία bit.

Τι από τα δύο να εμπιστευτούμε...
sent from mTHMMY (https://play.google.com/store/apps/details?id=gr.thmmy.mthmmy)

(Με κάθε επιφύλαξη)
Θυμάμαι αμυδρά από προηγούμενη εξεταστική που σκεφτόμουν να εξεταστώ στο μάθημα ότι κάποιος από τους πρωτοετείς που το παρακολουθούσαν μου είχε πει ότι από ένα σημείο και μετά ο Πιτσούλης είχε σταματήσει να ανεβάζει διαφάνειες στο elearning.


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: fred50 on September 13, 2018, 13:57:55 pm
το προσφατο αρχειο που ανεβηκε και εχει ασκησεις που γιναν στο μαθημα τις περιλαμβανει ολες ή υπαρχουν κι αλλες που γινανε και δεν ανεβηκαν;


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Spiro on September 13, 2018, 19:59:27 pm
Βασικά, οι μεταβλητές char είναι ακέραιοι αριθμοί του ενός byte και μπορούν χωρίς κανενα περιορισμό να χρησιμοποιηθούν με τον ίδιο τρόπο όπως οι int (προφανώς με μικρότερο εύρος τιμών). Απλά, εφόσον χρησιμοποιούμε στο printf το %c, ο μεταγλωτιστής καταλαβαίνει οτι αντί για τον αριθμό πρέπει να εκτυπώσει τον αντίστοιχο χαρακτήρα που βρίσκεται στην θέση με αυτόν τον αριθμό στον πίνακα ASCII. Τώρα, όταν ο δείκτης δείχνει στο 'D', και στην συνέχεια αυτή η τιμή αυξάνεται κατά 1, τότε αυτομάτως εκυπώνεται ο επόμενος χαρακτήρας του πινακα ASCII, που για ευνόητοους λόγους είναι το 'E'. Επιπλέον, εκτυπώνεται το 'E', διότι ο τελεστής ++ βρίσκεται πριν τον τελεστέο του, οπότε η προσαύξηση συμβαίνει πριν την εκτύπωση του χαρακτήρα.

(Βασικά ότι είπε και ο Spiro, απλά διαφωνώ λιγάκι με την διατύπωση)

Ένας από τους τρεις εδωω  ;D

Δεν ήταν σωστή όντως και η δική μου διατύπωση (ανεξάρτητα που το βρήκα σωστό) αλλά επίσης διαφωνώ με αυτό που γράφεις ότι "εκτυπώνεται το 'E', διότι ο τελεστής ++ βρίσκεται πριν τον τελεστέο του, οπότε η προσαύξηση συμβαίνει πριν την εκτύπωση του χαρακτήρα". Στην έκφραση **++p+1 η προτεραιότητα των τελεστών είναι: πρώτα το ++ μετά τα ** και τέλος το +1. Τώρα, η διαφορά με τις παραπάνω 2 εκφράσεις είναι ότι πριν δεν χρειαζόταν το όρισμα της printf να έχει 2 αστεράκια γιατί τυπωνόταν συμβολοσειρά (για τον ίδιο λόγο που για παράδειγμα κατά το διάβασμα ενος string μέσω της scanf/gets δεν χρειάζεται να βάλω το ampersand (&) ) ενώ τώρα τυπώνεται χαρακτήρας. Επομένως πρώτα εκτελείται το **++p και άρα διαβάζω 'D' (στην πραγματικότητα τον ακέραιο που αντιστοιχεί στο ASCII) και στη συνέχεια εκτελείται η πράξη +1, κι επομένως τυπώνεται το 'Ε'.

  :)


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: panos98 on September 13, 2018, 21:47:13 pm
παιδια για την 3 ασκηση στο φεβρουαριο 2018 εχετε καμια ιδεα να διορθωσω;
#include<stdio.h>
#include<stdlib.h>
int main(){
   int N,M;
   float** p;
   int i,j;
   printf("dose arithmo grammwn\n");
   scanf("%d",&N);
   printf("dose arithmo stilwn\n");
   scanf("%d",&M);
   p=malloc(sizeof(float*)*N);
   if(!p){
      printf("adinamia\n");
      exit(0);}
      for(i=0;i<N;++i)
      {
                p=malloc(sizeof(float)*M);
      if(!p ){
      
      printf("adinamia\n");
      exit(0);}
      }
   
      for(i=0;i<N;i++){
      for(j=0;j<M;j++){
      
          do(p [j]=rand());
          while(p<=1);
         ;
      }
}for(i=0;i<N;i++){
      for(j=0;j<M;j++){
          printf("%2f,",p[j]);}
}
for(i=0;i<N;i++)
free(p);
free(p);
   return 0;
   
}


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: panos98 on September 13, 2018, 22:00:50 pm
καποια δεν τα αντιγραφει σωστα το φορουμ εδω ο σωστος


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Spiro on September 13, 2018, 22:05:06 pm
Η άσκηση ζητούσε το άθροισμα των στοιχείων κάθε γραμμής να είναι μικρότερο του 1. Εσύ στον κώδικά σου απλά απαιτείς το κάθε ένα στοιχείο να είναι μικρότερο ή ίσο του ένα. Η πιο εύκολη λύση είναι αφού περάσεις τις τιμές στον πίνακα, να ορίσεις έναν πίνακα ίσο με τον αριθμό των γραμμών κάθε στοιχείο του οποίο θα είναι το άθροισμα όλης της γραμμής. Στη συνέχεια απλά τρέχεις τον πίνακα από την αρχή και διαιρείς (για κάθε γραμμή) κάθε στοιχείο του πίνακα με το αντίστοιχο άθροισμα. Μια υλοποίηση που έκανα εγώ είναι στο συνημμένο. Απλά (σχεδόν τα πάντα) τα υλοποιώ σε αντίστοιχες συναρτήσεις, κάτι το οποίο δεν το ζητούσε  :P.


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Singularity on September 14, 2018, 18:23:17 pm
Code:
#include <stdio.h>
#include <stdlib.h>

#define NUM 9
#define SIZE 5

int main()
{
    int i,j;
    int arr[NUM];

    for(i=0; i<NUM; i++)
    {
        printf("Enter number nu:%d", i+1);
        scanf("%d", &arr[i]);

    }

    for(i=0; i<SIZE; i++)
    {
        for(j=0; j<SIZE; j++)
        {
            if(i==j)
            {
                printf("%d\t", arr[i-j]);
            }

            if(i<j)
            {
                printf("%d\t", arr[j-i]);
            }

            if(i>j)
            {
                printf("%d\t", arr[SIZE+i-j-1]);

            }

        }


        printf("\n");
    }


    return 0;
}



Σήμερα το Θέμα 3 το έλυσα έτσι, το έλυσε κάποιος άλλος διαφορετικά???


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Singularity on September 14, 2018, 18:32:24 pm
ορίστε και η υλοποίηση του προγράμματος:

(https://i.imgur.com/yI4xW7c.png)


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Singularity on September 14, 2018, 18:52:56 pm
Code:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *p , **pp , i=1 , j=4;

    p=&i;
    pp=&p;
    **pp+=10;

    p=&j;

    **pp+=100;

    printf("%d" , i+j);


    return 0;
}

δεν έχω το γραπτό μπροστά μου αλλά νομίζω αυτό ήταν το πρώτο θέμα, η απάντηση που βγάζει αυτό το πρόγραμμα είναι 115, αυτή βρήκα και εγώ στο γραπτό, μπορεί κάποιος να επιβεβαιώσει την άσκηση???


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Spiro on September 14, 2018, 18:56:01 pm
εγω το ελυσα οριζοντας 2 πινακες:τον α = (a b c d e) και τον b = (f g h i)
στη συνεχεια πηρα 2 for με καταλληλες συνθηκες οι οποιες υπολογιζαν τα δυο τριγωνα του toplitz
εννοω:

η μια υπολογιζε   a b c d e       και η άλλη               
                               a b c d                             f
                                   a b c                            g f
                                      a b                            h g f
                                         a                            i h g f



Θέμα 1: 115 εβγαινε ναι


Title: Re: [Δομημένος Προγραμματισμός] Παλιά Θέματα
Post by: Ούγκι on September 14, 2018, 19:56:42 pm
Έστω ints o πίνακας των εννιά ακεραίων που διαβάστηκαν. Τότε τα στοιχεία του ζητούμενου πίνακα είναι:
Code:
matrix[i][j] = ints[4 + i - j]
sent from mTHMMY (https://play.google.com/store/apps/details?id=gr.thmmy.mthmmy)