Jimie Δημοσ. 21 Δεκεμβρίου 2011 Δημοσ. 21 Δεκεμβρίου 2011 Παιδιά χρειάζομαι άμεση βοήθεια έχω μία άσκηση που ζητάει ακριβώς ότι λέω και στον τίτλο αλλά δεν ξέρω πως να το κάνω...Έχω κάνει μόνο την αρχή. " Γράψτε ένα πρόγραμμα το οποίο θα μετατρέπει έναν δυαδικό (bin) αριθμό στον αντίστοιχο δεκαεξαδικό (hex) και οκταδικό (oct) αριθμό, τους οποίους και θα εκτυπώνει. Ο δυαδικός αριθμός θα ορίζεται στο πρόγραμμα ως πίνακας 16 θέσεων, κάθε στοιχείο του οποίου αντιστοιχεί σε ένα δυαδικό ψηφίο. Στην πρώτη θέση του πίνακα βρίσκεται το λιγότερο σημαντικό ψηφίο (LSB). " #include<stdio.h> #define N 15 main() { int i,B[N]; for(i=15;i>=0; i--) { printf("Dwse 1o,2o,3o.... stoixeio tou duadikou arithmou"); scanf("%d", &B); } Επίσης να ξέρετε ότι είμαι πρωτοετής άρα ξέρω ελάχιστα (μάλλον μόνο τα βασικά θα έλεγα) και πρέπει να παραδόσω μέχρι την παρασκευή. Ευχαριστώ για κάθε βοήθεια...
Pantelwolf Δημοσ. 21 Δεκεμβρίου 2011 Δημοσ. 21 Δεκεμβρίου 2011 Για αρχή βάλε τον σε char array και οχι σε int array, για να πιανει λιγότερο χώρο, και να ειναι πιο ευκολο στη διαχείριση επειτα η λογικη ειναι: απο το τελος παιρνουμε 3 - 3 ψηφια (οκταδικο) ή 4 - 4 (δεκαεξαδικό) και βρίσκεις το αντίστοιχο 16δικό/8δικο σύμβολο. πχ. > 1111 0000 0001 0010 θα γίνει F 0 1 2 στο 16δικο 1 111 000 000 010 010 1 7 0 0 2 2 στο 8δικό Συνέχισε, εύκολο είναι, προλαβαίνεις.
migf1 Δημοσ. 21 Δεκεμβρίου 2011 Δημοσ. 21 Δεκεμβρίου 2011 Στο τέλος αυτού του νήματος έχω δώσει κώδικα για μετατροπή από bin16 σε hex4 (σε πρόλαβε άλλος δηλαδή για την άσκηση ) με τη διαφορά πως εγώ θεωρώ ότι στη 1η θέση του bin16 βρίσκεται το most significant bit (MSB). Θεωρώντας πως εκεί βρίσκεται το LSB είναι ακόμα πιο εύκολο, γιατί το padding γίνεται με trailing zeros (και όχι με leading zeros όπως κάνω εγώ στον κώδικα). Χρειάζεται φυσικά και αλλαγή της συνάρτησης quart2dec().
bokarinho Δημοσ. 21 Δεκεμβρίου 2011 Δημοσ. 21 Δεκεμβρίου 2011 Στο τέλος αυτού του νήματος έχω δώσει κώδικα για μετατροπή από bin16 σε hex4 (σε πρόλαβε άλλος δηλαδή για την άσκηση ) με τη διαφορά πως εγώ θεωρώ ότι στη 1η θέση του bin16 βρίσκεται το most significant bit (MSB). Θεωρώντας πως εκεί βρίσκεται το LSB είναι ακόμα πιο εύκολο, γιατί το padding γίνεται με trailing zeros (και όχι με leading zeros όπως κάνω εγώ στον κώδικα). Χρειάζεται φυσικά και αλλαγή της συνάρτησης quart2dec(). Φίλε migf1, μου αρέσει που μου την είπες ότι έδωσα την άσκηση έτοιμη, που έκανα μία νύξη με λίγο κώδικα πως μπορεί κάποιος να την αντιμετωπίσει. Εσύ συνέχισες με ολόκληρη ανάλυση και τώρα θα συντελέσεις σε μία μαζική αντιγραφή όπως και μαζική (2ο νήμα) είναι η προσφυγή στο forum προς αναζήτηση επίλυσης. Τέλος πάντων ο καθένας εδώ είναι ελεύθερος να βοηθήσει όπως και όποτε θέλει, χωρίς παρεξήγηση, ο καθένας έχει την δική του φιλοσοφία.
migf1 Δημοσ. 21 Δεκεμβρίου 2011 Δημοσ. 21 Δεκεμβρίου 2011 Φίλε migf1, μου αρέσει που μου την είπες ότι έδωσα την άσκηση έτοιμη, που έκανα μία νύξη με λίγο κώδικα πως μπορεί κάποιος να την αντιμετωπίσει. Εσύ συνέχισες με ολόκληρη ανάλυση και τώρα θα συντελέσεις σε μία μαζική αντιγραφή όπως και μαζική (2ο νήμα) είναι η προσφυγή στο forum προς αναζήτηση επίλυσης. Τέλος πάντων ο καθένας εδώ είναι ελεύθερος να βοηθήσει όπως και όποτε θέλει, χωρίς παρεξήγηση, ο καθένας έχει την δική του φιλοσοφία. Βασικά αυτό που έδωσα είναι αφενός η μισή άσκηση και αφετέρου δεν είναι καθόλου εύκολο να κάνει κάποιος την άλλη μισή χωρίς να έχει κατανοήσει πλήρως πως και γιατί δουλεύει αυτό που έχω δώσει (εφόσον μιλάμε για πρωτοετείς). Έχω χρησιμοποιήσει επίτηδες πράγματα όπως είναι δείκτες, χρήση των memmove και memcpy, πολλαπλές αναθέσεις μεταβλητών μέσα στο control-statement των for-loops, κλπ ώστε να χρειαστεί να διαβάσει κανείς για να τα καταλάβει. Και πάλι είναι αμφίβολο αν θα τα καταφέρει, για αυτό και το εμπλούτισα με επεξηγηματικό κείμενο... για να δώσω δηλαδή κίνητρο να ασχοληθούν. Το ότι τους έχει ζητήσει το LSB αριστερά (αντί για δεξιά που το έχω εγώ) είναι μια επιπρόσθετη επιπλοκή, την οποία δεν την είχα βέβαια υπόψη μου όταν έγραφα το ποστ, αλλά είναι καλοδεχούμενη. All in all, πολύ αμφιβάλλω αν θα ασχοληθούν με τον κώδικά μου όσοι ψάχνουν για έτοιμες ή εύκολες λύσεις (θα του ρίξουν μια πεταχτή ματιά, δεν θα καταλάβουν γρι και θα προσπεράσουν). Από την άλλη όμως, όσοι πραγματικά ενδιαφέρονται να μάθουν νομίζω θα τους βοηθήσει δίνοντάς τους κατευθυντήριες γραμμές για να τον μετατρέψουν σε LSB αριστερά και να συμπληρώσουν και την οκταδική απεικόνιση.
bokarinho Δημοσ. 21 Δεκεμβρίου 2011 Δημοσ. 21 Δεκεμβρίου 2011 Βασικά αυτό που έδωσα είναι αφενός η μισή άσκηση και αφετέρου δεν είναι καθόλου εύκολο να κάνει κάποιος την άλλη μισή χωρίς να έχει κατανοήσει πλήρως πως και γιατί δουλεύει αυτό που έχω δώσει (εφόσον μιλάμε για πρωτοετείς). Έχω χρησιμοποιήσει επίτηδες πράγματα όπως είναι δείκτες, χρήση των memmove και memcpy, πολλαπλές αναθέσεις μεταβλητών μέσα στο control-statement των for-loops, κλπ ώστε να χρειαστεί να διαβάσει κανείς για να τα καταλάβει. Και πάλι είναι αμφίβολο αν θα τα καταφέρει, για αυτό και το εμπλούτισα με επεξηγηματικό κείμενο... για να δώσω δηλαδή κίνητρο να ασχοληθούν. Το ότι τους έχει ζητήσει το LSB αριστερά (αντί για δεξιά που το έχω εγώ) είναι μια επιπρόσθετη επιπλοκή, την οποία δεν την είχα βέβαια υπόψη μου όταν έγραφα το ποστ, αλλά είναι καλοδεχούμενη. All in all, πολύ αμφιβάλλω αν θα ασχοληθούν με τον κώδικά μου όσοι ψάχνουν για έτοιμες ή εύκολες λύσεις (θα του ρίξουν μια πεταχτή ματιά, δεν θα καταλάβουν γρι και θα προσπεράσουν). Από την άλλη όμως, όσοι πραγματικά ενδιαφέρονται να μάθουν νομίζω θα τους βοηθήσει δίνοντάς τους κατευθυντήριες γραμμές για να τον μετατρέψουν σε LSB αριστερά και να συμπληρώσουν και την οκταδική απεικόνιση. Κατάλαβα, καλή συνέχεια.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα