Πώς να αντιστρέψετε μια συμβολοσειρά στο Γ

How Reverse String C



Στην κωδικοποίηση συμβολοσειρών, η αντιστροφή της συμβολοσειράς είναι ένα κρίσιμο θέμα. Υπάρχουν επίσης αρκετές μέθοδοι αντιστροφής μιας συμβολοσειράς, καθεμία από τις οποίες έχει διαφορετική λογική. Αυτό το άρθρο θα σας δείξει πώς να αντιστρέψετε σωστά μια συμβολοσειρά για να χρησιμοποιήσετε πολλές διαφορετικές προσεγγίσεις και συλλογισμούς με και χωρίς να απαιτείτε προκαθορισμένες λειτουργίες. Κάθε φορά που η αντιστροφή μιας τεχνικής συμβολοσειράς εφαρμόζεται σε μια συγκεκριμένη μοναδική συμβολοσειρά εισόδου, το κείμενο που θα παρείχε ένας καταναλωτής σε μια συγκεκριμένη σειρά θα αντιστρέφεται πλήρως. Στην παρακάτω περίπτωση, έχουν χρησιμοποιηθεί διαφορετικές εναλλακτικές λύσεις αντιστροφής μιας συμβολοσειράς με C.

Κατά την εφαρμογή αυτού του οδηγού, εργαζόμαστε στο σύστημα Linux Ubuntu 20.04 που έχει διαμορφωθεί στο Virtual Box. Ενώ εργαζόμασταν σε ένα σύστημα Linux, κάναμε τις περισσότερες εγκαταστάσεις και ερωτήματα στο κέλυφος του τερματικού. Ως εκ τούτου, ανοίξτε το κέλυφος τερματικού με μια συντόμευση Ctrl+Alt+T ή αναζητήστε το μέσω μιας γραμμής αναζήτησης εφαρμογών στην περιοχή Δραστηριότητα της επιφάνειας εργασίας του Ubuntu. Είναι απαραίτητο να ενημερώσετε το σύστημά σας πρώτα μέσω του ερωτήματος apt update. Θα σας ζητήσει τον τρέχοντα κωδικό πρόσβασης χρήστη για να εκτελέσετε την ενημέρωση. Επομένως, προσθέστε έναν κωδικό πρόσβασης και πατήστε το κουμπί Enter.







$ sudo apt ενημέρωση



Καθώς χρησιμοποιούσαμε τη γλώσσα προγραμματισμού C για να επεξεργαστούμε την έννοια της αντιστροφής συμβολοσειρών στο σύστημα Ubuntu 20.04, θα πρέπει να έχουμε εγκατεστημένο έναν μεταγλωττιστή C στο σύστημα του Ubuntu. Επομένως, βεβαιωθείτε ότι έχετε εγκαταστήσει τον μεταγλωττιστή GCC στο σύστημά σας μέσω του παρακάτω ερωτήματος.



$ sudo apt εγκατάσταση gcc

Παράδειγμα 01: Χρήση για βρόχο

Μετά την εγκατάσταση και τη διαμόρφωση του μεταγλωττιστή GCC και την ενημέρωση του πακέτου apt, γυρίζει η δημιουργία ενός νέου αρχείου. Αυτό το αρχείο πρέπει να είναι τύπου C. Επομένως, χρησιμοποιήστε την εντολή αφής για να δημιουργήσετε ένα αρχείο new.c όπως παρακάτω. Αυτό το αρχείο θα χρησιμοποιείται στον κώδικά μας από εδώ και πέρα ​​κατά την υλοποίηση προγραμμάτων αντίστροφης συμβολοσειράς.





$ touch νέο.ντο

Τώρα μπορείτε να ανοίξετε αυτό το αρχείο για επεξεργασία ή κωδικοποίηση από έναν επεξεργαστή Nano που είναι ενσωματωμένο στο σύστημα Linux Ubuntu 20.04. Επομένως, δοκιμάστε τις παρακάτω οδηγίες στο κέλυφος σας για να το κάνετε.



$ nano νέο.ντο

Το νέο αρχείο τύπου C άνοιξε στο GNU Nano Editor του συστήματος Ubuntu 20.04. Πρέπει να γράψετε ένα σενάριο C σε αυτό, όπως παρουσιάζεται στην εικόνα του στιγμιότυπου οθόνης από κάτω. Ας επεξεργαστείμε αυτόν τον κώδικα για καλύτερη κατανόηση. Στην αρχή ενός κώδικα, έχουμε συμπεριλάβει δύο βιβλιοθήκες. Η βιβλιοθήκη stdio.h έχει χρησιμοποιηθεί για τη λήψη εισόδων και την εμφάνιση των εξόδων, και η άλλη συμβολοσειρά βιβλιοθήκης.h έχει χρησιμοποιηθεί για τη χρήση όλων των ειδών των συμβολοσειρών στον κώδικά μας. Όλη η εργασία αντιστροφής μιας συμβολοσειράς θα γίνει στην κύρια () μέθοδο ενός κώδικα C. Έχουμε δηλώσει μια συμβολοσειρά τύπου χαρακτήρα με μέγεθος 50. Αυτό σημαίνει ότι μια συμβολοσειρά με περισσότερους από 50 χαρακτήρες δεν μπορεί να ψυχαγωγηθεί σε αυτόν τον κώδικα. Μετά από αυτό, έχουμε δηλώσει δύο μεταβλητές τύπου ακέραιου τύπου. Η μεταβλητή l έχει χρησιμοποιηθεί για τη συλλογή του μήκους μιας συμβολοσειράς συμβολοσειράς και η μεταβλητή Ι θα χρησιμοποιηθεί ως αρχικοποιητής στο βρόχο for. Στη συνέχεια, χρησιμοποιήσαμε μια δήλωση printf για να εκτυπώσουμε ένα κείμενο στη συμβολοσειρά κελύφους Enter, λέγοντας στον χρήστη να προσθέσει μια τιμή σε μια μεταβλητή συμβολοσειράς. Η μέθοδος scanf () χρησιμοποιήθηκε για την εισαγωγή του χρήστη την ώρα εκτέλεσης και την αποθήκευση αυτής της τιμής σε μια συμβολοσειρά συμβολοσειράς. Η συνάρτηση strlen () χρησιμοποιήθηκε για να ελέγξει το μήκος μιας συμβολοσειράς συμβολοσειράς που έχει προστεθεί από έναν χρήστη κατά την εκτέλεση και να την αποθηκεύσει σε μια μεταβλητή l ’. Στη συνέχεια, αρχικοποιήσαμε έναν βρόχο for για να αντιστρέψουμε το str. Μπορείτε να δείτε ότι ο αρχικοποιητής Ι ’παίρνει την τιμή από μια μεταβλητή l για να αντιστρέψει την κατεύθυνση μιας συμβολοσειράς. Στη συνέχεια, εκτυπώνει τους χαρακτήρες μιας συμβολοσειράς str ’έναν έναν αντιστροφή. Στο τελευταίο, η κύρια μέθοδος έχει τελειώσει. Αποθηκεύστε αυτό το αρχείο χρησιμοποιώντας Ctrl+S και κλείστε το μέσω Ctrl+X.

Τώρα ήρθε η ώρα να μεταγλωττίσετε τον κώδικα και να ελέγξετε για την έξοδο του. Ως εκ τούτου, η μεταγλώττιση έγινε από το παρακάτω gcc ερώτημα με το όνομα ενός αρχείου new.c.

$ gcc νέο.ντο

Καθώς η μεταγλώττιση γίνεται επιτυχής, σημαίνει ότι δεν υπάρχει σφάλμα στον κώδικά μας. Ας εκτελέσουμε το αρχείο μας με ερώτημα a.out στο κέλυφος ως εξής:

$./προς το.έξω

Η διαδικασία εκτέλεσης θα ζητήσει από τον χρήστη να προσθέσει μια συμβολοσειρά. Προσθέσαμε το I-Am-Aqsa-Yasin και πατήσαμε Enter. Μπορείτε να δείτε ότι επιστρέφει το αντίστροφο μιας συμβολοσειράς στην ακόλουθη γραμμή.

Παράδειγμα 02: Χρήση εναλλαγής

Σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε τη μέθοδο εναλλαγής για να αντιστρέψουμε τη σειρά μιας συμβολοσειράς. Επομένως, ανοίξτε το αρχείο new.c για άλλη μια φορά χρησιμοποιώντας το πρόγραμμα επεξεργασίας nano ως εξής:

$ nano νέο.ντο

Τώρα το αρχείο έχει ανοίξει στον επεξεργαστή nano GNU. πρέπει να ενημερώσουμε το αρχείο κώδικα με το παρακάτω σενάριο στο στιγμιότυπο οθόνης. Έχουμε συμπεριλάβει το τυπικό αρχείο κεφαλίδας εισόδου και εξόδου στον κώδικα μας χρησιμοποιώντας μια λέξη -κλειδί #include. Ορίσαμε μια μέθοδο Αντίστροφη () σύμφωνα με τη χρήση της τεχνικής ανταλλαγής. Έχουμε αρχικοποιήσει τρεις μεταβλητές τύπου ακέραιου τύπου new, I και swap. Ο πρώτος βρόχος for χρησιμοποιείται για να ελέγξει εάν η συμβολοσειρά s είναι κενή ή όχι. Ο επόμενος για βρόχος χρησιμοποιείται για επανάληψη και στο σώμα του, έχουμε εναλλάξει τις τιμές χρησιμοποιώντας νέες και εναλλακτικές μεταβλητές. Αξίζει να σημειωθεί ότι η αντιστροφή μιας συμβολοσειράς μήκους n απαιτεί μόνο n/2 γύρους. Μόλις αλλάξουν οι συμβολοσειρές, θα πρέπει να κάνετε ξανά βρόχο για να εμφανίσετε την αντίστροφη συμβολοσειρά, κάτι που κάνουμε μέσα στην εφαρμογή μας χρησιμοποιώντας έναν τρίτο βρόχο. Η συνάρτηση Reverse () πρέπει να κληθεί από το εσωτερικό κύριο πρόγραμμα. Έχετε δηλώσει τι λειτουργεί το λογισμικό σας με το printf στο πλαίσιο του main (). Μετά από αυτό, χρησιμοποιήσατε το scanf () για να λάβετε την είσοδο του χρήστη και επικαλεστήκατε τη μέθοδο Αντίστροφη (). Τώρα αποθηκεύστε ξανά το αρχείο χρησιμοποιώντας Ctrl+S και αφήστε τον επεξεργαστή nano με συντόμευση Ctrl+X και επιστρέψτε στο κέλυφος τερματικού.

Συγκεντρώστε τον κώδικα πρώτα με ένα ερώτημα gcc όπως παρακάτω.

$ gcc νέο.ντο

Τώρα εκτελέστε το αρχείο κώδικα χρησιμοποιώντας την ίδια ./a.out οδηγία.

$./προς το.έξω

Θα σας ζητήσει να εισαγάγετε την τιμή συμβολοσειράς. Προσθέσαμε το AqsaYasin και πήραμε το αντίστροφο.

Παράδειγμα 03: Χρήση Αναδρομής

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

$ nano νέο.ντο

Αυτό το πρόγραμμα εκτυπώνει Εισαγάγετε μια πρόταση: Στη συνέχεια χρησιμοποιείται μια μέθοδος Αντίστροφη (). Το αρχικό γράμμα που εισάγει ένας χρήστης αποθηκεύεται στο c μέσω αυτής της μεθόδου. Το αντίστροφο () εκτελείται ξανά εάν το όρισμα είναι κάτι διαφορετικό από n (νέα γραμμή). Αυτή η διαδικασία συνεχίζεται μέχρι ο χρήστης να πατήσει το πλήκτρο Enter. Κάθε φορά που ο χρήστης πατάει enter, η μέθοδος Reverse () εκτυπώνει το κείμενο με αντίστροφη σειρά. Αποθηκεύστε και κλείστε το αρχείο.

Συγκεντρώστε πρώτα τον κώδικα και στη συνέχεια εκτελέστε τον χρησιμοποιώντας τις προηγούμενες εντολές ως εξής:

$ gcc νέο.ντο

$./προς το.έξω

Μπορείτε να δείτε ότι λαμβάνει είσοδο από έναν χρήστη ως μια ολόκληρη πρόταση συμβολοσειράς και, στη συνέχεια, να αντιστρέψετε τη σειρά αυτής της πρότασης.

Συμπέρασμα:

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