ioanna_k Δημοσ. 16 Νοεμβρίου 2014 Δημοσ. 16 Νοεμβρίου 2014 Γεια! Είναι μια άσκηση που ζητάει να φτιαχτεί πρόγραμμα που να διαβάζει έναν ακέραιο και να εκτυπώνει τον αριθμό των μπιτς 1. πχ για το 30 (0000000000000000011110) εκτυπώνει 4. Ο καθηγητής δεν μας έχει δώσει κάποια θεωρία για αυτό ή κάποια υπόδειξη και στο βιβλίο δεν βρίσκω κάτι που να βοηθάει, οπότε δεν ξέρω πώς να ξεκινήσω. Μπορεί κανείς να μου δώσει μια υπόδειξη?? Ευχαριστώ!
imitheos Δημοσ. 16 Νοεμβρίου 2014 Δημοσ. 16 Νοεμβρίου 2014 Η όχι και τόσο αποδοτική αλλά πιο απλοϊκή και εύκολη μέθοδος είναι να παίρνεις τον αριθμό και να τον μετατρέπεις σε δυαδικό σύστημα όπως έκανες στο 30. Θα χρησιμοποιήσεις ένα string για να αποθηκεύεις το κάθε bit. Έπειτα διατρέχεις το string και μετράς πόσοι χαρακτήρες είναι '1'. Αν η άσκηση δεν έχει επόμενο μέρος και σε ενδιαφέρει απλά ο αριθμός των άσσων, τότε δεν χρειάζεσαι καν το string και μπορείς να μετράς τους άσσους κατευθείαν.
NikosKallithea Δημοσ. 16 Νοεμβρίου 2014 Δημοσ. 16 Νοεμβρίου 2014 Γεια! Είναι μια άσκηση που ζητάει να φτιαχτεί πρόγραμμα που να διαβάζει έναν ακέραιο και να εκτυπώνει τον αριθμό των μπιτς 1. πχ για το 30 (0000000000000000011110) εκτυπώνει 4. Ο καθηγητής δεν μας έχει δώσει κάποια θεωρία για αυτό ή κάποια υπόδειξη και στο βιβλίο δεν βρίσκω κάτι που να βοηθάει, οπότε δεν ξέρω πώς να ξεκινήσω. Μπορεί κανείς να μου δώσει μια υπόδειξη?? Ευχαριστώ! Εχει σημασία η θεση με στην οποία θα μπουν οι άσσοι Η λυση ειναι οι διαδοχικές διαιρέσεις του ακέραιου με το δυο, και όπου προκύπτει υπόλοιπο 1 είναι και η θέση του bit μέσα στο bite Η όχι και τόσο αποδοτική αλλά πιο απλοϊκή και εύκολη μέθοδος είναι να παίρνεις τον αριθμό και να τον μετατρέπεις σε δυαδικό σύστημα όπως έκανες στο 30. Θα χρησιμοποιήσεις ένα string για να αποθηκεύεις το κάθε bit. Έπειτα διατρέχεις το string και μετράς πόσοι χαρακτήρες είναι '1'. Αν η άσκηση δεν έχει επόμενο μέρος και σε ενδιαφέρει απλά ο αριθμός των άσσων, τότε δεν χρειάζεσαι καν το string και μπορείς να μετράς τους άσσους κατευθείαν. Της λες το αντίθετο ακριβώς απο αυτο που ρωτάει, τον δυαδικό αριθμό δεν τον γνωρίζει, αυτός είναι το ζητούμενο. 1
imitheos Δημοσ. 16 Νοεμβρίου 2014 Δημοσ. 16 Νοεμβρίου 2014 Της λες το αντίθετο ακριβώς απο αυτο που ρωτάει, τον δυαδικό αριθμό δεν τον γνωρίζει, αυτός είναι το ζητούμενο. Γιατί της είπα το αντίθετο ? Της είπα να μετατρέψει σε δυαδικό τον αριθμό που της δίνουν.
NikosKallithea Δημοσ. 16 Νοεμβρίου 2014 Δημοσ. 16 Νοεμβρίου 2014 Γιατί της είπα το αντίθετο ? Της είπα να μετατρέψει σε δυαδικό τον αριθμό που της δίνουν. οκ μετέτρεψε μου λοιπόν και έμενα με το σύστημα που λες το 344 δε δυαδικό
infin1tyGR Δημοσ. 16 Νοεμβρίου 2014 Δημοσ. 16 Νοεμβρίου 2014 Εχει σημασία η θεση με στην οποία θα μπουν οι άσσοι Δε νομίζω ότι η άσκηση λέει μόνο μετατροπή. Λέει πόσοι άσσοι υπάρχουν στον δυαδικό αριθμό, δηλαδή μετά τη μετατροπή (η οποία γίνεται με τον τρόπο που λες) να μετρήσει πόσα '1' υπάρχουν, όχι ότι έχει κάποια φυσική σημασία αλλά λογικά επειδή είναι άσκηση θέλει να το εξετάσει και αυτό. Τουλάχιστον αυτό καταλαβαίνω εγώ από το 1ο post, αφού λέει ότι για το 30 που είναι το (11110)2 εκτυπώνει 4, δηλαδή ότι περιέχει 4 άσσους.
defacer Δημοσ. 16 Νοεμβρίου 2014 Δημοσ. 16 Νοεμβρίου 2014 Μπορείς να το κάνεις όπως λέει ο ημίθεος. Μπορείς να το κάνεις με διαίρεση και τον τελεστή % (modulo). Αν ακέραιος Χ τότε η παράσταση Χ % 2 == 1 ισχύει αν και μόνο αν ο Χ είναι μονός. Αλλά επίσης ο Χ είναι μονός αν και μόνο αν το τελευταίο του bit είναι άσσος. Διαιρώντας το Χ με 2 τι συμβαίνει; Βάλε ένα Χ, δες το στο δυαδικό, διαίρεσέ το με 2, δες το αποτέλεσμα στο δυαδικό. Θα καταλάβεις που πάει το πράγμα. Μπορείς ακόμα να το κάνεις με bitwise τελεστές >> (που θα κάνει την ίδια δουλειά με τη διαίρεση έτσι όπως θα χρησιμοποιηθεί) και & (που θα κάνει την ίδια δουλειά με το modulo επίσης). Υπάρχουν και άλλες παραλλαγές πάνω σ' αυτές τις τεχνικές που θα δώσουν το αποτέλεσμα αλλά να μη το κουράσουμε. Ανάλογα με το τι από αυτά έχετε διδαχτεί λογικά προκύπτει και η λύση που περιμένει να δει ο καθηγητής. Αλλά αυτό δε χρειάζεται να σε δεσμεύει, κάντο με όποιο τρόπο θες (και με πολλούς τρόπους αν θες, καλό στον εαυτό σου θα κάνεις). 1
ioanna_k Δημοσ. 17 Νοεμβρίου 2014 Μέλος Δημοσ. 17 Νοεμβρίου 2014 Ευχαριστώ πολύ παιδιά!! Την κατάφερα!! 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα