Στη C++, μπορείς να συγκρίνεις τιμές χρησιμοποιώντας τους τελεστές σύγκρισης.
| Σύγκριση | Τελεστής |
|---|---|
| ίσο με | == |
| διάφορο του | != |
| μικρότερο | < |
| μικρότερο ή ίσο | <= |
| μεγαλύτερο | > |
| μεγαλύτερο ή ίσο | >= |
Το αποτέλεσμα αυτών των συγκρίσεων είναι πάντα μια τιμή boolean (λογική τιμή):
int a{3};
bool eq1 = a != 4; // true
bool eq2 = a > 5; // false
Οι τελεστές == και != ελέγχουν αν μια τιμή είναι ίση ή όχι με μια άλλη, αντίστοιχα.
Ακολουθούν μερικά συνηθισμένα παραδείγματα:
bool eq3 = 2 == 3; // false, integer comparison
bool eq4 = 2.1 != 2.2; // true, float comparison
bool eq5 = "hello" == "hello"; // true, string comparison
Οι υπόλοιποι τελεστές ελέγχουν αν μια τιμή είναι μεγαλύτερη από (>), μεγαλύτερη ή ίση με (>=), μικρότερη από (<) και μικρότερη ή ίση με (<=) μια άλλη τιμή.
Αυτού του είδους η σύγκριση είναι διαθέσιμη για αριθμούς και συμβολοσειρές.
Όταν συγκρίνεις συμβολοσειρές, ακολουθείται η σειρά του λεξικού (γνωστή και ως λεξικογραφική σειρά).
bool eq6 = 2 > 3; // false, integer comparison
bool eq7 = 1.2 < 1.3; // true, float comparison
bool eq8 = "Hello" < "World"; // true, string comparison
if
Οι συνθήκες στη C++ μοιάζουν με τις συνθήκες σε άλλες γλώσσες.
Ο υποκείμενος τύπος κάθε πράξης συνθήκης είναι ο τύπος bool, ο οποίος μπορεί να έχει την τιμή true ή false.
Οι συνθήκες χρησιμοποιούνται συχνά ως μηχανισμοί ελέγχου ροής για να ελέγχουν διάφορες περιπτώσεις.
Μπορείς να χρησιμοποιήσεις μια εντολή if, η οποία εκτελεί τον κώδικά της αν η υποκείμενη συνθήκη είναι true, όπως εδώ:
std::string value{"val"};
if (value == "val") {
return "was val";
}
Σε περιπτώσεις με περισσότερα από ένα ενδεχόμενα, πολλές εντολές if μπορούν να αλυσοδεθούν μεταξύ τους με τις εντολές else if και else.
int number{33};
if (number > 0) {
return "positive";
} else if (number < 0) {
return "negative";
} else {
return "zero";
}
Από τη C++17 και μετά, οι εντολές if μπορούν επίσης να περιλαμβάνουν μια σύντομη εντολή αρχικοποίησης, η οποία μπορεί να χρησιμοποιηθεί για την αρχικοποίηση μιας ή περισσότερων μεταβλητών για την εντολή if. Για παράδειγμα:
int num{7};
if (int v{2 * num}; v > 10) {
return v;
} else {
return num;
}
// => 14
Σημείωση: όποιες μεταβλητές δημιουργούνται στην αρχικοποίηση δεν είναι προσβάσιμες μετά το τέλος της εντολής if.
Σε αυτή την άσκηση, θα γράψεις λίγο κώδικα για να σε βοηθήσει να προετοιμαστείς για την αγορά ενός οχήματος.
Έχεις τρεις εργασίες: μία για να καθορίσεις αν χρειάζεσαι άδεια οδήγησης, μία για να σε βοηθήσει να επιλέξεις ανάμεσα σε δύο οχήματα, και μία για να υπολογίσεις την αποδεκτή τιμή για ένα μεταχειρισμένο όχημα.
Ορισμένοι τύποι οχημάτων απαιτούν άδεια οδήγησης για να τα οδηγήσεις.
Υπόθεσε ότι μόνο οι τύποι "car" και "truck" απαιτούν άδεια, ενώ όλα τα υπόλοιπα μπορούν να οδηγηθούν χωρίς άδεια.
Υλοποίησε τη συνάρτηση needs_license(kind) που παίρνει τον τύπο οχήματος ως συμβολοσειρά και επιστρέφει μια τιμή Boolean που δείχνει αν χρειάζεσαι άδεια για αυτόν τον τύπο οχήματος.
needs_license("car")
// => true
needs_license("bike")
// => false
needs_license("truck")
// => true
Αξιολογείς τις επιλογές σου από τα διαθέσιμα οχήματα.
Καταφέρνεις να τις περιορίσεις σε δύο επιλογές, αλλά χρειάζεσαι βοήθεια για να πάρεις την τελική απόφαση.
Για αυτό, υλοποίησε τη συνάρτηση choose_vehicle(option1, option2) που παίρνει δύο οχήματα ως ορίσματα και επιστρέφει μια απόφαση που περιλαμβάνει την επιλογή που έρχεται πρώτη στη λεξικογραφική σειρά.
choose_vehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
choose_vehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
Η συμβολοσειρά που επιστρέφεται θα πρέπει να ακολουθεί το μοτίβο "<CHOSEN_VEHICLE> is clearly the better choice.", όπου το <CHOSEN_VEHICLE> είναι η επιλογή που διαλέγεις από τα ορίσματα που δίνονται.
Τώρα που πήρες μια απόφαση, θέλεις να βεβαιωθείς ότι θα πάρεις μια δίκαιη τιμή στην αντιπροσωπεία. Επειδή ενδιαφέρεσαι να αγοράσεις ένα μεταχειρισμένο όχημα, η τιμή εξαρτάται από το πόσο παλιό είναι το όχημα. Για μια πρόχειρη εκτίμηση, υπόθεσε ότι αν το όχημα είναι λιγότερο από 3 ετών, κοστίζει το 80% της αρχικής τιμής που είχε όταν ήταν ολοκαίνουργιο. Αν είναι τουλάχιστον 10 ετών, κοστίζει το 50%. Αν το όχημα είναι τουλάχιστον 3 ετών αλλά λιγότερο από 10, κοστίζει το 70% της αρχικής τιμής.
Υλοποίησε τη συνάρτηση calculate_resell_price(original_price, age) που εφαρμόζει αυτή τη λογική χρησιμοποιώντας if, else if και else (υπάρχουν και άλλοι τρόποι αν θέλεις να εξασκηθείς).
Παίρνει την αρχική τιμή και την ηλικία του οχήματος ως ορίσματα και επιστρέφει την εκτιμώμενη τιμή στην αντιπροσωπεία.
calculate_resell_price(1000, 1)
// => 800
calculate_resell_price(1000, 5)
// => 700
calculate_resell_price(1000.0, 15)
// => 500
Σημείωση: η τιμή επιστροφής είναι τύπου
double.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις C++ με 19 έννοιες100 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.