Διαδρομές
/
C++
C++
/
Ασκήσεις
/
Αγορά οχήματος
Αγορά οχήματος

Αγορά οχήματος

Άσκηση εκμάθησης

Εισαγωγή

Συγκρίσεις

Στη 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.

Οδηγίες

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

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

1. Καθόρισε αν θα χρειαστείς άδεια οδήγησης

Ορισμένοι τύποι οχημάτων απαιτούν άδεια οδήγησης για να τα οδηγήσεις. Υπόθεσε ότι μόνο οι τύποι "car" και "truck" απαιτούν άδεια, ενώ όλα τα υπόλοιπα μπορούν να οδηγηθούν χωρίς άδεια.

Υλοποίησε τη συνάρτηση needs_license(kind) που παίρνει τον τύπο οχήματος ως συμβολοσειρά και επιστρέφει μια τιμή Boolean που δείχνει αν χρειάζεσαι άδεια για αυτόν τον τύπο οχήματος.

needs_license("car")
// => true

needs_license("bike")
// => false

needs_license("truck")
// => true

2. Διάλεξε ανάμεσα σε δύο πιθανά οχήματα για αγορά

Αξιολογείς τις επιλογές σου από τα διαθέσιμα οχήματα. Καταφέρνεις να τις περιορίσεις σε δύο επιλογές, αλλά χρειάζεσαι βοήθεια για να πάρεις την τελική απόφαση. Για αυτό, υλοποίησε τη συνάρτηση 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. Υπολόγισε μια εκτίμηση για την τιμή ενός μεταχειρισμένου οχήματος

Τώρα που πήρες μια απόφαση, θέλεις να βεβαιωθείς ότι θα πάρεις μια δίκαιη τιμή στην αντιπροσωπεία. Επειδή ενδιαφέρεσαι να αγοράσεις ένα μεταχειρισμένο όχημα, η τιμή εξαρτάται από το πόσο παλιό είναι το όχημα. Για μια πρόχειρη εκτίμηση, υπόθεσε ότι αν το όχημα είναι λιγότερο από 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.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
C++ Exercism

Έτοιμος να ξεκινήσεις την άσκηση Αγορά οχήματος;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις C++ με 19 έννοιες100 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.