Προγραμματισμός

Γνώση Υπολογιστών >> Προγραμματισμός >  >> Προγραμματισμός C / C++

Πώς να απορρίψει το Data που υπερχειλίζουν τα Διαστάσεις

προγράμματα ηλεκτρονικών υπολογιστών που χρησιμοποιούνται συχνά για να εκτελέσει κάποια αξιόλογη εργασία για τα στοιχεία που υποβάλλονται σε αυτό ως είσοδο . Για παράδειγμα, ένα πρόγραμμα μπορεί να γραφεί για την εκτέλεση υπολογισμών περιοχής στο ύψος και το πλάτος διαστάσεις. Δεδομένου ότι οποιοσδήποτε αριθμός μπορεί να υποβληθεί στο πρόγραμμα , υπάρχει η πιθανότητα ότι μια είσοδος είναι πολύ μεγάλο για να υποβληθούν σε επεξεργασία . Αυτό οδηγεί σε μια υπερχείλιση , η οποία προκαλεί καταστροφή δεδομένων . Μπορείτε να χρησιμοποιήσετε μια γλώσσα προγραμματισμού όπως η C + + να απορρίψει τα στοιχεία που θα μπορούσε να προκαλέσει μια κατάσταση υπερχείλισης . Τα πράγματα που θα χρειαστείτε
C + + ολοκληρωμένο περιβάλλον ανάπτυξης ( IDE ) , όπως Eclipse CDT
C + + Compiler , μια τέτοια GCC
Η Εμφάνιση Περισσότερες οδηγίες
Η

1 Τοποθετήστε το C + + IDE κάνοντας κλικ στο εικονίδιο του προγράμματος του . Όταν ανοίγει , επιλέξτε " File /New /Project" και επιλέξτε " C + + Project" για να δημιουργήσετε ένα νέο C + + project . Ένα αρχείο πηγαίου κώδικα εμφανίζεται στο τμήμα επεξεργασίας κειμένου του IDE . Αυτό το αρχείο περιέχει μια αυτόματα "κύριος ", η οποία χρησιμεύει ως σημείο εισόδου για το πρόγραμμά σας . Θα τοποθετήσετε όλα κωδικός σας μέσα στις αγκύλες που εμφανίζονται αμέσως κάτω από την « κύρια » λειτουργία. 2

Γράψτε τις ακόλουθες δηλώσεις μεταβλητών μεταξύ των αγκυλών του "κύριος " λειτουργία. Οι δύο πρώτες μεταβλητές χρησιμοποιούνται για να συλλάβει είσοδο από το πληκτρολόγιο . " Μήκος" Οι μεταβλητές » και« πλάτος » διαστάσεις λαβή σε ένα τύπο δεδομένων που ονομάζεται " μικρή ", το οποίο μπορεί μόνο την αποθήκευση τιμών έως 32.767 πριν ξεχειλίζει . Η τελική μεταβλητή χρησιμοποιείται για την αποθήκευση της περιοχής των διαστάσεων , και είναι τύπου "μακρύ ". Αυτό το είδος των δεδομένων που μπορεί να αποθηκεύσει τις τιμές μέχρι 2,147,483,647 , η οποία είναι δύο φορές η μέγιστη τιμή είναι δυνατόν , όταν πολλαπλασιάζοντας δύο « σορτς » μαζί

char * inputString ? .

Char buffer [ 256 ] ?

μικρού μήκους = 0 ?

σύντομο width = 5 ?

μεγάλη περιοχή = 0 ?
εικόνων 3

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

printf ( " εισάγετε τη διάσταση μήκους : \\ n" ) ?
Η 4

Γράψτε μια δήλωση που συλλαμβάνει την είσοδο του χρήστη από το πληκτρολογίου , χρησιμοποιώντας τις μεταβλητές " inputString » και « ρυθμιστικό », όπως αυτό :

inputString = fgets ( buffer , 256 , stdin ) ?
5

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

αν ( atoi ( inputString ) > SHRT_MAX && atoi ( inputString ) > 0 )

{ printf ( "Δεδομένα απορριφθεί για ξεχειλίζει διάσταση \\ n" ) ? }
Η 6

Γράψτε ένα « άλλο » δήλωση που τρέχει μόνο αν η προηγούμενη " if", αξιολογεί ως ψευδείς . Αυτό συμβαίνει όταν η τιμή εισόδου είναι μέσα στο κατάλληλο εύρος τιμών για " σύντομη " τύπους δεδομένων .

Άλλο

{ }
Η 7

Γράψτε δύο δηλώσεις ότι εκδοχείς η « inputString " στο "μήκος " μεταβλητή και πολλαπλασιάζει με το πλάτος μεταβλητή. Τοποθετήστε τις δύο ακόλουθες καταστάσεις ανάμεσα στις αγκύλες που ακολουθούν αμέσως το " άλλο " δήλωση:

μήκος = atoi ( inputString ) ?

Περιοχή = μήκος * πλάτος?
< Br > 8

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

printf ( " Περιοχή : % d " , περιοχή ) ?
Η 9 < p> Πιέστε το πλήκτρο "Play" πράσινο για να εκτελέσει το πρόγραμμα . Μια γραμμή εντολών εμφανίζεται με μια γραμμή κειμένου που σας ζητά να εισάγετε έναν αριθμό . Πληκτρολογήστε το 32.768 , το οποίο είναι ένα από τα υψηλότερα " SHRT_MAX ", και το κείμενο που ακολουθεί είναι η έξοδος :

Data απορριφθεί για ξεχειλίζει διάσταση
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα