Προς το περιεχόμενο

προβλημα σε c(ασκηση καθηγητ)


aikat90

Προτεινόμενες αναρτήσεις

Πρέπει όμως να στο διδάξει κάποιος αυτό ή έστω να σε βάλει σε κάποιο δρόμο σκέψης ώστε να το ψάξεις και να το βρεις. Στους 10 που θα την λύσουν οι 9 θα έχουν τριάντα if γιατί έτσι σκέφτηκαν τη λύση. Μη σου πω ότι και ο καθηγητής έτσι θα την έχει λύσει και όχι με τον τρόπο του παπί.

 

Καλά αυτό εννοείται. Μη σου πω στους 10 οι 11 θα έχουν 30 if. Εδώ έχω εμπειρία από πρώτο χέρι που μας ζήτησαν σε εξετάσεις να γράψουμε ένα πρόγραμμα το οποίο έκανε reduce σε επίλυση συστήματος 2x2 με ακέραιους αγνώστους και συντελεστές και έβλεπα τον κόσμο να το λύνει με for δοκιμάζοντας αν τα νούμερα επιβεβαιώνουν την επιθυμητή συνθήκη και τραβούσα ο,τι προεξείχε. That said, αυτό που έκανε το παπί δε νομίζω πως είναι και rocket science.

 

Το σχόλιο πήγαινε βασικά στον Starlight που γελάει με πράγματα για τα οποία δε γνωρίζει ούτε καν την ύπαρξή τους και δε χρειάζεται να πω περισσότερα.

 

Βέβαια τελικά άλλο το να μπορείς να σκεφτείς διαισθητικά να κάνεις κάτι που είναι στην ουσία ένα inefficient sorting network (και μένα αυτή ήταν η πρώτη μου σκέψη όταν πρωτοσυνάντησα το πρόβλημα) και άλλο το να ξέρεις τι έχεις στα χέρια σου και τη θεωρία του. Αυτά μόνο με διάβασμα το οποίο προαπαιτεί να ξέρεις άλλα πράγματα, οπότε δεν είναι σίγουρα για 1ο έτος. Δεν ξέρω αν σε CS σχολές στην Ελλάδα στα λένε αυτά σε κάποια φάση αλλά και να στα λένε πιθανότατα πέρασε και δεν ακούμπησε.

 

Το optimal sorting network στην προκειμένη δεν είναι το "διαισθητικό" αλλά αυτό (1 comparison λιγότερο, στο χρόνο που γλιτώνεις γίνεσαι πλούσιος με bitcoin mining): http://ideone.com/ldYWyW

 

Μπορείτε να παίξετε με την είσοδο στο stdin online για το χαβαλέ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 54
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Με τον καθηγητη γέλασα. Διοτι βαζει πραγματα που δεν εχει διδαξει για να το παιξει μούρη και μάγκας στους μαθητες οτι και καλα δεν μπορουν να λυσουν τις ασκησεις του αρα ειναι φοβερος :P.Kανονικα θα επρεπε να κανει αυτο που λεει ο ημιθεος να τους δειξει δηλαδη απο που να ξεκινησουν. 

 

Αν τους έχει διδαξει ηδη την αναδρομη πάσο. Κατα τα αλλα μπορω να τον κρίνω άνετα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

if      (a <= b && b <= c && c <= d) // a b c d
else if (a <= b && b <= d && d <= c) // a b d c
else if (a <= c && c <= b && b <= d) // a c b d
// κλπ κλπ

Μπορεί να είναι λίγο "manual" αλλά η ιδέα είναι απλή: υπάρχουν 4! = 24 μεταθέσεις 4 στοιχείων. Μία τουλάχιστον από αυτές είναι σωστά ταξινομημένη. Τις γράφεις όλες στο χαρτί και μετά απλά προσθέτεις τα <= και && ανάμεσα. Δε νομίζω πως υπάρχει περίπτωση να κάνεις λάθος σε κάτι, είναι τυφλοσούρτης όσο δεν πάει.

 

Edit: ακριβώς το ίδιο πράγμα δηλαδή που είπε ο albNik παραπάνω, τώρα το είδα.

 

Τώρα για το ότι κρίνεις κάποιον που όχι απλά δεν έχεις βρεθεί στη θέση του αλλά επιπλέον το μόνο που ξέρεις για το σκεπτικό του είναι περίληψη από δεύτερο χέρι... whatever.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλά αυτό εννοείται. Μη σου πω στους 10 οι 11 θα έχουν 30 if. Εδώ έχω εμπειρία από πρώτο χέρι που μας ζήτησαν σε εξετάσεις να γράψουμε ένα πρόγραμμα το οποίο έκανε reduce σε επίλυση συστήματος 2x2 με ακέραιους αγνώστους και συντελεστές και έβλεπα τον κόσμο να το λύνει με for δοκιμάζοντας αν τα νούμερα επιβεβαιώνουν την επιθυμητή συνθήκη και τραβούσα ο,τι προεξείχε. That said, αυτό που έκανε το παπί δε νομίζω πως είναι και rocket science.

Για να πω την αλήθεια και εγώ το πρώτο πράγμα που σκέφτηκα για λύση χωρίς πίνακες ήταν το if(τάδε && δείνα κτλ) και όταν είδα το μήνυμα του παπί σκέφτηκα "ναι ρε γμτ. τι βλάκας είμαι και δεν το σκέφτηκα". Αν καθόμουν σοβαρά να λύσω την άσκηση το πιο πιθανό ήταν να το κάνω σαν τον παπί αλλά έτσι διαβάζοντας απλά το νήμα ούτε πήγε το μυαλό μου εκεί.

 

Αυτά μόνο με διάβασμα το οποίο προαπαιτεί να ξέρεις άλλα πράγματα, οπότε δεν είναι σίγουρα για 1ο έτος. Δεν ξέρω αν σε CS σχολές στην Ελλάδα στα λένε αυτά σε κάποια φάση αλλά και να στα λένε πιθανότατα πέρασε και δεν ακούμπησε.

Για να μη γενικολογήσω πάλι, να πω πώς στη δική μου με τπτ. Αλγόριθμοι, τρόπος σκέψης, κτλ ποτέ. Απλά αναφορά του συντακτικού της γλώσσας και λύστε την τάδε άσκηση.

 

void main()
     {
         int i;
 int k;
  }
Οι λύσεις του καθηγητή (για να είμαι δίκαιος ίσως όχι του ίδιου του καθηγητή αλλά κάποιου μεταπτυχιακού. το ίδιο κάνει όμως) είχανε indentation που σε κάθε γραμμή άλλαζε όπως φαίνεται παραπάνω, void main(), fflush(stdin), Ελληνικά iso literals και ό,τι turboc-isms μπορεί να φανταστεί κανείς.

 

Σε μια άσκηση, ο χρήστης έδινε ένα αριθμό 1<=i<=12 και το πρόγραμμα εμφάνιζε Ιανουάριος, κτλ. Η προτεινόμενη λύση είχε switch-case με 12 printf αντί να έχει ένα πίνακα και να τυπώνει κατευθείαν το months[i-1].

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μήπως είναι ο ίδιος καθηγητής που είχε βάλει την άλλη άσκηση με τις 30 printf για να τους δείξει την χρησιμότητα των επαναλήξεων; :P

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το θεμα ρε παιδια ειναι οτι με 30 ιφ κανταναει κουραστικο(συν οτι η επομενη ασηκηση ηταν σχεδον ιδια με 30 ιφ) κανταει κουραστικο...καποι απο μας ξερουμε επανληψεις αλλα κατανοω οτι εχει καποιο "σχεδιο"...αλλα το θεμα ειναι οτι μας πεταξαν σε ενα εργαστηριο ειπαν καποια ελαχιστα πραγματα στην θεωρια και στο εργαστηριο και εβαλαν μια διορια να τις παραδωσουμε...πραγμα απαραδεκτο..(εγω χωρις καποια προηγουμενη εμπειρια πιστευω θα ειχα μεγαλο προβλημα)

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν θέλει πίνακα αλλά και 30 if. Μπορεί να λυθεί με 2 μεταβλητές νομίζω μια max και μια που να δέχεται τον αριθμό αν ο αριθμός που δίνει είναι μεγαλύτερος του max τότε βάτε την τιμή στο max. Αυτό επανέλαβέ το 4 φορές και σε κάθε loop διάβαζε από το stdin έναν νέο αριθμό. Kαι επειδή  σου ζητάει να μην τα βάλεις σε πίνακα βάλτα σε λίστα αν θέλει να βλέπει όλους τους αριθμούς που έχεις δώσει. Αλλιώς με ένα switch έλεγχε το i του loop και αναλόγως διάβαζε την κατάλληλη μεταβλητή.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν θέλει πίνακα αλλά και 30 if. Μπορεί να λυθεί με 2 μεταβλητές νομίζω μια max και μια που να δέχεται τον αριθμό αν ο αριθμός που δίνει είναι μεγαλύτερος του max τότε βάτε την τιμή στο max. Αυτό επανέλαβέ το 4 φορές και σε κάθε loop διάβαζε από το stdin έναν νέο αριθμό. Kαι επειδή  σου ζητάει να μην τα βάλεις σε πίνακα βάλτα σε λίστα αν θέλει να βλέπει όλους τους αριθμούς που έχεις δώσει. Αλλιώς με ένα switch έλεγχε το i του loop και αναλόγως διάβαζε την κατάλληλη μεταβλητή.

 

Δεν θελει ουτε loops. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

η ασκηση ηταν αποκλειστικα με με ιφ...και δεν ηθελε λλοπσ και το παραδειγμα τησ ασκησης ηταν το εξεις:

if (i1 < i2) {
if (i2 < i3) {
if (i3 < i4)
printf("The correct order is: %d,%d,%d,%d\
n",
i1, i2, i3, i4);
else if (i2 < i4)
printf("The correct order is: %d,%d,%d,%d\
n",
i1, i2, i4, i3);
else if ... 
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@defacer έχεις την ικανοτητα να παραδεχθείς οτι ειχες λάθος? :D

 

οπως βλέπεις τελικα ο κυριος σεβαστός καθηγητης τους δεν ειχε κανενα σχέδιο εκμάθησης κάτι συγκεκριμενου πισω απο αυτη την άσκηση που τους έβαλε.Τουλαχιστον κατι τετοιο δεν φαινεται απο αυτα που λεει ο aikat90.

 

aikat90 σας έδωσε κάποιο υποδειγμα λυσης? ειναι αυτο που μας δινει πιο πάνω? Με τοσες if? Αν ηθελε απλα να διδαξει τις if-else  και else if θα μπορουσε να βάλει κατι καλύτερο κατα την γνώμη μου.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

 

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

 

@defacer έχεις την ικανοτητα να παραδεχθείς οτι ειχες λάθος? :D

 

οπως βλέπεις τελικα ο κυριος σεβαστός καθηγητης τους δεν ειχε κανενα σχέδιο εκμάθησης κάτι συγκεκριμενου πισω απο αυτη την άσκηση που τους έβαλε.Τουλαχιστον κατι τετοιο δεν φαινεται απο αυτα που λεει ο aikat90.

 

Διαβάσαμε το ίδιο topic και οι 2, έτσι;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εγω ξερω οτι πηρες το μερος του καθηγητη. Κοιτα δεν θα χαθω σε διαφωνιες τωρα. Πηρες το μερος του καθηγητη ενω οπως μας ειπε το παιδι ΔΕΝ ηθελε να κανει κατι συγκεκριμενο. Εδω καλα καλα ΔΕΝ ηθελε ουτε αυτο που τουλαχιστον εσυ υπεθεσες οτι θέλει με τους  && δεν βλεπεις ποσες if εχει το παραδειγμα? ουτε καν θα ηθελε να δει αμα οι μαθητες σκεφτηκαν την λυση με το παραγοντικο και τις μεταθεσεις.

 

τελοςπαντων να ξερεις οτι εχω ζησει και εγω ορισμενους καθηγητες απο αυτους και μαλιστα αμα δεν το πιεζα ακομα θα ειχα τις πτυχιακες τους και θα ετρεχα. Δεν δινουν σημασια ορισμενοι ειναι στην κοσμαρα τους.Εδω εχω καθηγητη ο οποιος δεν απαντουσε στα email μας και ειναι ολη μερα στο φεησμπουκ και ανεβαζει μηνυματακια και φιλοσοφιες πλακα μου κανεις τωρα? για αυτο η νεα γενια βγαινει με περιεργες ιδεες επειδη οι καθηγητες δεν δινουν σημασια. Στην Αγγλια ο καθηγητης μεσα σε 12 ωρες σου εχει απαντησει σε email εδω ειναι εξοχότητες δεν καταδεχονται.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Βασικά δεν κατάλαβες τι έκανα, οπότε να το εξηγήσω λίγο. 2 πράγματα, κανένα από τα οποία δεν ήταν να "πάρω το μέρος" κανενός.

 

Πρώτον, το σχόλιό σου περι "χαχα lol έλεος γιατί να κάνεις κάτι τέτοιο" με έκανε να μπω και να γράψω τα περι sorting networks. Για δύο λόγους: ένα, επειδή μπορεί κάποιοι που διαβάζουν το thread (πιθανότατα βέβαια όχι ο TS) να ενδιαφερθούν όπως και γω είχα ενδιαφερθεί να μάθω περισσότερα όταν πρωτοσυνάντησα το concept. Και δύο, επειδή κλασικό ignorant σχόλιο Starlight και ας μην επεκταθώ.

 

Δεύτερον, είπα πως ενδεχομένως/κατα την άποψή μου, ο καθηγητής μπορεί να έχει κάτι στο μυαλό του που οι σπουδαστές του δεν έχουν. Επιπλέον, εμείς εδώ που τα διαβάζουμε από περίληψη και φιλτραρισμένα ήδη από κάποιο σπουδαστή μάλλον δε μπορούμε να έχουμε αρκετά ξεκάθαρη εικόνα για να βγάζουμε αβίαστα συμπεράσματα. Απέφυγα δηλαδή να "βγάλω ετυμηγορία" και αντ' αυτού έκανα λίγο το δικηγόρο του διαβόλου. Έχοντας υπάρξει και γω τόσο σπουδαστής (με δασκάλους ενίοτε φανταστικούς και ενίοτε να 'χαμε να λέγαμε) όσο και διδάσκων (με μαθητές ενίοτε φανταστικούς και ενίοτε πιο αδιάφορος πεθαίνεις) καταλαβαίνω πως είναι πολύ εύκολο για κάποιον που δεν έχει δει και τις 2 όψεις του νομίσματος να παρεξηγήσει πράγματα. Επίσης καταλαβαίνω ότι είναι εύκολο να αρχίσει κανείς το κοπαδικό bashing των καθηγητών, ειδικά όταν είναι μικροετής και δεν του έχει δοθεί ακόμα η ευκαιρία να έχει τα aha moments "αααα γι΄αυτό μας έβαζε να το κάνουμε αυτό νωρίτερα...". Ή όταν του έχει δοθεί αλλά πέρασε και δεν ακούμπησε.

 

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

 

Αυτά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...