Δύσκολες Ασκήσεις στις Δομές Επανάληψης

Ξεκίνησε από olga_ath, 13 Οκτ 2010, 02:47:27 ΜΜ

« προηγούμενο - επόμενο »

olga_ath

Καλησπέρα

Ανοίγω αυτό το thread με σκοπό μια συζήτηση σχετικα με το τι θεωρούμε ως ασκήσεις αυξημένης αλγοριθμικής δυσκολίας στις Δομές Επανάληψης.
Με αφορμή το 3ο Θέμα του 2007 Γενικά Λύκεια ήρθε η εμπνευση για την άσκηση στο επισυναπτόμενο αρχείο. Παραθέτω και μια λύση της την οποία ομως σχημάτισα πρόχειρα οπότε μπορεί να περιέχει λάθη.

Το βράδυ θα ποστάρω και μερικές ακόμη τις οποίες θεωρώ ως αυξημένης δυσκολίας αλλά δεν είναι δικές μου δημιουργίες  :angel: οπότε θα παραθέσω και τις πηγές.
Doubt everyone and first of all yourself

gpapargi

Το άνω όριο δυσκολίας το δείχνει το τετράδιο μαθητή. Ξεχωρίζω σαν ασκήσεις την ανάλυση αριθμού σε πρώτους παράγοντες και το ανάπτυγμα του ημιτόνου και συνημιτόνου σε δυναμοσειρά. Το θέμα του 2007 έχει επίσης την αφετηρία του στο τετράδιο μαθητή.

olga_ath

Doubt everyone and first of all yourself

ALEXANDROS LIAPIS

 καλησπέρα κ από εμένα.
κάνω την παρθενική εμφάνιση στο ΣΤΕΚΙ και στέλνω αυτό το πρόγραμμα.
Είναι στην ίδια φιλοσοφία με το δικό σου.

evry

Τρεις Ασκήσεις που θεωρώ δύσκολες και κρύβουν σημαντικούς διδακτικούς στόχους όσον αφορά τον προγραμματισμό

1. Να γίνει αλγόριθμος ο οποίος θα διαβάζει αριθμούς μέχρι να δοθεί 0 και θα εμφανίζει τον αριθμό που δόθηκε τις περισσότερες συνεχόμενες φορές

2. Να γίνει αλγόριθμος ο οποίος θα διαβάζει 100 αριθμούς και θα ελέγχει αν αποτελούν διαδοχικούς όρους αριθμητικής προόδου

3. Να γίνει αλγόριθμος ο οποίος θα διαβάζει αριθμούς και θα ελέγχει αν αποτελούν διαδοχικούς όρους της ακολουθίας Fibonacci.  Ο αλγόριθμος θα σταματάει όταν διαπιστώσει ότι η ακολουθία δεν είναι Fibonacci ή όταν δοθεί ο αριθμός -1.

Προφανώς θα πρέπει να δοθεί μια σημείωση στην οποία να εξηγούνται οι έννοιες της αριθμητικής προόδου και της ακολουθίας Fibonacci
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

soron80

Παράθεση από: ALEXANDROS LIAPIS στις 17 Δεκ 2010, 03:00:46 ΜΜ
καλησπέρα κ από εμένα.
κάνω την παρθενική εμφάνιση στο ΣΤΕΚΙ και στέλνω αυτό το πρόγραμμα.
Είναι στην ίδια φιλοσοφία με το δικό σου.


ΔΕΝ Μπορώ να καταλάβω τη δυσκολία του προγράμματος αυτού...
Τσισπαράς Βασίλης
Καθηγητής Πληροφορικής ΠΕ19

olga_ath

Παράθεση από: evry στις 17 Δεκ 2010, 05:23:29 ΜΜ
Τρεις Ασκήσεις που θεωρώ δύσκολες και κρύβουν σημαντικούς διδακτικούς στόχους όσον αφορά τον προγραμματισμό

1. Να γίνει αλγόριθμος ο οποίος θα διαβάζει αριθμούς μέχρι να δοθεί 0 και θα εμφανίζει τον αριθμό που δόθηκε τις περισσότερες συνεχόμενες φορές

2. Να γίνει αλγόριθμος ο οποίος θα διαβάζει 100 αριθμούς και θα ελέγχει αν αποτελούν διαδοχικούς όρους αριθμητικής προόδου

3. Να γίνει αλγόριθμος ο οποίος θα διαβάζει αριθμούς και θα ελέγχει αν αποτελούν διαδοχικούς όρους της ακολουθίας Fibonacci.  Ο αλγόριθμος θα σταματάει όταν διαπιστώσει ότι η ακολουθία δεν είναι Fibonacci ή όταν δοθεί ο αριθμός -1.

Προφανώς θα πρέπει να δοθεί μια σημείωση στην οποία να εξηγούνται οι έννοιες της αριθμητικής προόδου και της ακολουθίας Fibonacci

Οντως έχουν αυξημένη αλγοριθμική δυσκολία και διδακτικούς στόχους και οι 3 ασκήσεις που δίνεις.

Δημιούργησα μια γρήγορη λύση στο χέρι που νομίζω πως δουλευει
Θα ήθελα να ακουσω την αποψη σας

Αλγόριθμος test
Διάβασε αριθμ
max_συχνότητα ← -1
Οσο αριθμ <>0 επανάλαβε
      προηγούμενος← αριθμ
      διαβασε αριθμ
      συχν← 0
      Οσο προηγούμενος=αριθμ επανάλαβε
         συχν← συχν+1
         Αν συχν >max_συχνότητα τότε
            max_συχνότητα ← συχν   
            στοχος← αριθμ
         Τέλος_αν
         διάβασε αριθμ
      Τέλος_Επανάληψης
Τέλος_Επανάληψης
Γράψε στοχος
Τέλος Test
   
Οσο για την άσκηση του συναδέλφου Αλέξανδρου δυστυχώς δεν μπορώ να ανοίξω το αρχείο :-(

Θα ήθελα επίσης να ακούσω την αποψή σας και για την δική μου άσκηση στο επισυναπτόμενο αρχείο. Προσπάθησα να την δημιουργήσω με την λογικη του 3ου και 4ου θέματος των πανελληνίων.

ευχαριστώ
Doubt everyone and first of all yourself

evry

Η λύση μου φαίνεται σωστή, απλά θα το προτιμούσα με μια μόνο επανάληψη, δηλαδή χωρίς να χρησιμοποιείς και 2η Όσο....Επανάλαβε μέσα στην επανάληψη.
Επίσης η συχνότητα θα έπρεπε να ξεκινάει από 1 γιατί έχεις ήδη διαβάσει μια φορά τον αριθμό. Παρ'όλα αυτά αυτό δεν επηρεάζει τη λύση σου, αφού όλες οι συχνότητες είναι κατά -1 μικρότερες άρα το μεγαλύτερο θα το βρεις.

Όσο για την άσκησή σου, αν κατάλαβα καλά έχεις κάνει μια παραλλαγή της άσκησης με τα γραμματόσημα του 2007. Όταν έρθει πολύ ακριβό προϊόν τότε ο αλγόριθμος δεν σταματά αλλά ζητάει από τον χρήστη τι να κάνει. Μου φαίνεται πολύ καλή ιδέα.
Πάντως στη λύση σου πάλι δε μου αρέσει αυτή η δεύτερη επανάληψη. Θα προτιμούσα μια. ;)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

olga_ath

 :D ευχαριστώ για το θετικό feedback για την άσκηση που πρέπει να ξοδέψεις πρώτα ΟΛΟ το ποσό και μετά να αφήσεις το πολυκαστάστημα  ;)

Οσο για την λύση στη δική σας άσκηση αρχικοποίησα με μηδέν την μεταβλητή συχνότητα γιατί μιλάει για συχνότητα εμφάνισης συνεχόμενων αριθμών οπότε στην αρχή που δεν εχω κάνει ακόμη τον ελεγχο η συχνότητα είναι 0.

Θα προσπαθήσω να την λύσω και με μια επανάληψη και θα επανέλθω. Συγχωρεστε με για την πολύπλοκη σκέψη :-)
Είναι όμως μια κάποια λυση 8)

ευχαριστώ
Doubt everyone and first of all yourself

evry

ναι βρε , η λύση σου είναι μια χαρά, δεν υπάρχει θέμα, απλά αν έχεις χρόνο δοκίμασε χωρίς την επανάληψη, θα δεις ότι ο κώδικας θα μαζευτεί λίγο.
Τώρα σχετικά με τη συχνότητα εννοούσα το εξής: Ο πρώτος αριθμός που θα έρθει δεν έχει εμφανιστεί ήδη μια φορά? άρα ο μετρητής πρέπει να ξεκινάει από 1 , αυτό εννοούσα.
Δηλαδή για να έναν αριθμό που θα εμφανιστεί 3 συνεχόμενες φορές ο μετρητής σου θα δώσει 2 και όχι 3.

Σχετικά με τις άλλες ασκήσεις που έδωσα απλά να προσθέσω το εξής:
  Για την άσκηση με την αριθμητική πρόοδο η συνθήκη που ζητάμε είναι κάθε 2 διαδοχικοί όροι να έχουν σταθερή διαφορά.

Επίσης για την άσκηση με τους Fibonacci, απλά θα πω ότι είναι πολύ πιο δύσκολη από ότι φαίνεται, και ότι κρύβει μια παγίδα η οποία δεν είναι ορατή με την πρώτη ματιά
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

olga_ath

#10
 :) θα την προσπαθήσω αργότερα Ναι!!

Πως φαίνεται αυτή η λύση; Επίσης αυτή η κουβέντα όπου κάτι γραμμένο σε ΟΣΟ ουσιαστικά μπορεί να γραφτεί και με αν μου άρεσε πολύ ως πιθανό Δευτερο θεμα :-)

Αλγόριθμος test
Διάβασε αριθμ
max_συχνότητα ← -1
συχν← 1
Οσο αριθμ <>0 επανάλαβε
      προηγούμενος← αριθμ
      διαβασε αριθμ
     
      Αν προηγούμενος=αριθμ τότε
         συχν← συχν+1
         Αν συχν >max_συχνότητα τότε
            max_συχνότητα ← συχν   
            στοχος← αριθμ
         Τέλος_αν
   Αλλιώς
      συχν ← 1
   Τέλος_αν
Τέλος_Επανάληψης

Για κάποιο λόγο ερμηνευσα το πρόβλημα λιγάκι διαφορετικά και είπα ότι στην μεταβλητή συχνότητα θα μετράω πόσες συνεχόμενες φορές εμφανίζεται ένας αριθμός. Δλδ αν το 2 εμφανίστεί δευτερη φορά η μεταβλητή συχνότητα θα γίνει 1 και πάει λέγοντας. Δεν ξέρω αν βγάζει νόημα και αν αυτό εννοούσε εν τελει ο ποιητής.

Με ιντριγκάρει τώρα η τρίτη άσκηση για την παγίδα που αναφέρετε ! Btw και μάλλον οff topic πότε και που μπορούμε να στέλνου θέματα για το Διαγώνισμα;;

Doubt everyone and first of all yourself

odysseas

Παράθεση από: olga_ath στις 20 Δεκ 2010, 06:00:41 ΜΜ
         Αν συχν >max_συχνότητα τότε
            max_συχνότητα ← συχν   
            στοχος← αριθμ
         Τέλος_αν

Έχω την εντύπωση ότι αυτή η ΑΝ δεν είναι ανάγκη να βρίσκεται στην εσωτερική επανάληψη. Δεν υπάρχει λόγος να γίνεται αυτός ο έλεγχος πριν τελειώσει το σερί των συνεχόμενων αριθμών.

Παράθεση από: evry στις 20 Δεκ 2010, 07:43:38 ΜΜ
Επίσης για την άσκηση με τους Fibonacci, απλά θα πω ότι είναι πολύ πιο δύσκολη από ότι φαίνεται, και ότι κρύβει μια παγίδα η οποία δεν είναι ορατή με την πρώτη ματιά

Ευριπίδη, ο πρώτος αριθμός που θα δώσει ο χρήστης πρέπει να είναι ο 1 ή μπορεί να ξεκινήσει από οποιονδήποτε αριθμό;

evry

Έλα ντε, αν η εκφώνηση μιλάει "για ακολουθία στην οποία κάθε αριθμός είναι το άθροισμα των 2 προηγουμένων" τότε δεν υπάρχει πρόβλημα. Αν όμως μιλάει για ακολουθία Fibonacci τότε θα πρέπει να εξασφαλίσει ότι οι αριθμοί είναι και Fibonacci. Λίγο διεστραμμένο για να το δώσεις σε μαθητή φυσικά, αλλά είναι ένα καλό παράδειγμα που δείχνει ότι πρέπει να προσέχουμε πολύ όταν φτιάχνουμε ασκήσεις, γιατί άλλα μπορεί να εννοούμε και άλλα να λέμε τελικά.

Φυσικά πάλι λύνεται

Παράθεση από: odysseas στις 20 Δεκ 2010, 08:23:27 ΜΜ
Ευριπίδη, ο πρώτος αριθμός που θα δώσει ο χρήστης πρέπει να είναι ο 1 ή μπορεί να ξεκινήσει από οποιονδήποτε αριθμό;
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Βασίλης Παπαχρήστος

Παράθεση από: olga_ath στις 13 Οκτ 2010, 02:47:27 ΜΜ
Καλησπέρα

Ανοίγω αυτό το thread με σκοπό μια συζήτηση σχετικα με το τι θεωρούμε ως ασκήσεις αυξημένης αλγοριθμικής δυσκολίας στις Δομές Επανάληψης.
Με αφορμή το 3ο Θέμα του 2007 Γενικά Λύκεια ήρθε η εμπνευση για την άσκηση στο επισυναπτόμενο αρχείο. Παραθέτω και μια λύση της την οποία ομως σχημάτισα πρόχειρα οπότε μπορεί να περιέχει λάθη.

Το βράδυ θα ποστάρω και μερικές ακόμη τις οποίες θεωρώ ως αυξημένης δυσκολίας αλλά δεν είναι δικές μου δημιουργίες  :angel: οπότε θα παραθέσω και τις πηγές.

Κάτι δεν μου αρέσει στη διατύπωση στο ερώτημα με τη μάρκα LesPetites, πράγμα το οποίο φαίνεται και στη λύση σου.

Με τον τρόπο που έχεις λύσει την άσκηση ο καταναλωτής δεν επωφελείται μόνο 50 ή μόνο 90€ αλλά 50€ για κάθε προϊόν της συγκεκριμένης μάρκας από 6 μέχρι 10 και 90€ για κάθε προϊόν πάνω από τα 10. Με άλλα λόγια αν κάθε φορά αγοράζει ένα φθηνό προϊόν της μάρκας LesPetites (αξίας ας υποθέσουμε 40€) στο τέλος θα μπορέσει να σηκώσει το μαγαζί αφού τα χρήματα στην κάρτα συνεχώς θα αυξάνουν :)

Επειδή γράφεις "κατά τη διάρκεια των αγορών" είναι προφανές ότι πρώτα θα γίνουν 5 τα προϊόντα οπότε και θα επωφεληθεί τα 50€. Πρέπει να διευκρινίσεις τι συμβαίνει από εκεί και πέρα γιατί έτσι όπως το διατυπώνεις υπάρχει σύγχυση. 

evry

Μια αρκετά δύσκολη άσκηση που έχει ενδιαφέρον για σκέψη είναι η παρακάτω:

Να σχεδιαστεί αλγόριθμος ο οποίος να διαβάζει έναν ακέραιο αριθμό και να υπολογίζει και να εμφανίζει τον κατοπτρικό του. Θεωρείστε ότι ο αριθμός μπορεί να έχει απεριόριστο αριθμό ψηφίων
Παράδειγμα ο κατοπτρικός του 812800496 είναι ο 694008218,
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr