Λειτουργικά συστήματα

Γνώση Υπολογιστών >> Λειτουργικά συστήματα >  >> Unix

Γράψτε ένα πρόγραμμα κελύφους στο Unix για να βρείτε το Palindrome του αριθμού;

Υπάρχουν αρκετές προσεγγίσεις για την εύρεση του παλινδρόμου ενός αριθμού σε ένα σενάριο κελύφους Unix. Εδώ είναι δύο εκδόσεις:μία χρησιμοποιώντας μόνο ενσωματωμένες εντολές κελύφους (πιο φορητές αλλά δυνητικά λιγότερο αποτελεσματικές για πολύ μεγάλους αριθμούς) και ένα άλλο χρησιμοποιώντας `awk` (πιο αποτελεσματικό για μεγαλύτερους αριθμούς).

Έκδοση 1:Χρησιμοποιώντας μόνο τα ενσωματωμένα κέλυφος (bash)

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

`` `bash

#!/bin/bash

Διαβάστε -p "Εισαγάγετε έναν αριθμό:" NUM

Αντιστρέψτε τον αριθμό χρησιμοποιώντας τη χειραγώγηση συμβολοσειρά

reversed_num =$ (echo "$ num" | rev)

Συγκρίνετε τους πρωτότυπους και αντιστρέφοντες αριθμούς

αν ["$ num" =="$ reversed_num"]; τότε

echo "$ num είναι ένα palindrome."

αλλού

Το Echo "$ num δεν είναι παλινδρόμιο."

fi

`` `

Έκδοση 2:Χρήση AWK (πιο αποτελεσματική)

Αυτή η έκδοση χρησιμοποιεί `awk`, το οποίο είναι γενικά πιο αποτελεσματικό για αριθμητικούς χειρισμούς, ειδικά με μεγαλύτερους αριθμούς.

`` `bash

#!/bin/bash

Διαβάστε -p "Εισαγάγετε έναν αριθμό:" NUM

Χρησιμοποιήστε το AWK για να αντιστρέψετε τον αριθμό και να ελέγξετε το Palindrome

awk -v num ="$ num" 'Ξεκινήστε {

reversed_num ="";

temp_num =num;

ενώ (temp_num> 0) {

reversed_num =reversed_num (temp_num % 10);

temp_num =int (temp_num / 10);

}

αν (num ==reversed_num) {

Το Print Num "είναι ένα Palindrome."

} αλλιώς {

Το Print Num "δεν είναι παλινδρόμιο."

}

} '

`` `

Πώς να χρησιμοποιήσετε είτε σενάριο:

1. Αποθήκευση του κώδικα ως αρχείο (π.χ., `palindrome.sh ').

2. Κάντε το εκτελέσιμο:`chmod +x palindrome.sh`.

3. Εκτελέστε το:`./Palindrome.sh`.

4. Εισαγάγετε έναν αριθμό όταν σας ζητηθεί.

Επεξήγηση της έκδοσης 2 (AWK):

* `-v num =" $ num "`:Περνάει τον αριθμό εισόδου από τη μεταβλητή κελύφους `num 'στο σενάριο` awk`.

* `Begin`:Αυτό το μπλοκ εκτελείται πριν επεξεργαστεί οποιεσδήποτε γραμμές εισόδου.

* `reversed_num =" "":`:αρχικοποιεί μια κενή συμβολοσειρά για να αποθηκεύσει τον αντιστροφή του αριθμού.

* `temp_num =num;`:δημιουργεί ένα προσωρινό αντίγραφο του αριθμού για να αποφευχθεί η τροποποίηση του πρωτότυπου.

* `Ενώ (temp_num> 0)`:βρόχοι μέχρι να γίνει ο προσωρινός αριθμός 0.

* `reversed_num =reversed_num (temp_num % 10),`:Εξάγει το τελευταίο ψηφίο χρησιμοποιώντας τον χειριστή Modulo (` %`) και το προσθέτει σε `reversed_num`.

* `temp_num =int (temp_num / 10)` `:Αφαιρεί το τελευταίο ψηφίο με ακέραιο τμήμα (` / `).

* Η τελική δήλωση `if` συγκρίνει τους πρωτότυπους και αντιστρέβους αριθμούς και εκτυπώνει το κατάλληλο μήνυμα.

Η έκδοση `awk` συνιστάται γενικά για την αποτελεσματικότητά της, ειδικά όταν ασχολείται με μεγαλύτερους αριθμούς. Επιλέξτε την έκδοση που ταιριάζει καλύτερα στις ανάγκες σας και στο περιβάλλον του κελύφους. Θυμηθείτε να χειριστείτε πιθανά σφάλματα (όπως μη-Νυρωτική είσοδο) για ένα πιο ισχυρό σενάριο σε ένα περιβάλλον παραγωγής.

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

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