Η γλώσσα C++ παρέχει μια πληθώρα συναρτήσεων που σας επιτρέπουν να πραγματοποιήσετε μαθηματικές εργασίες σε αριθμούς.
Η συνάρτηση max(x, y)
χρησιμοποιείται για να επιστρέψει τη μεγαλύτερη τιμή ανάμεσα στις μεταβλητές x
και y
. Αν ο x
είναι μεγαλύτερος από τον y
, τότε η συνάρτηση επιστρέφει την τιμή του x
, ενώ αν ο y
είναι μεγαλύτερος από τον x
, τότε επιστρέφει την τιμή του y
.
Από την άλλη πλευρά, η συνάρτηση min(x, y)
χρησιμοποιείται για να επιστρέψει τη μικρότερη τιμή ανάμεσα στις μεταβλητές x
και y
. Αν ο x
είναι μικρότερος από τον y
, τότε η συνάρτηση επιστρέφει την τιμή του x
, ενώ αν ο y
είναι μικρότερος από τον x
, τότε επιστρέφει την τιμή του y
.
Ας υποθέσουμε ότι έχουμε δύο ακέραιες μεταβλητές x
και y
. Μπορούμε να χρησιμοποιήσουμε τις συναρτήσεις max
και min
για να βρούμε τη μεγαλύτερη και τη μικρότερη τιμή αντίστοιχα. Ας δούμε ένα ολοκληρωμένο παράδειγμα:
#include <iostream> // Συνάρτηση που επιστρέφει το μέγιστο από δύο ακέραιους αριθμούς int max(int a, int b) { if (a > b) { return a; } else { return b; } } // Συνάρτηση που επιστρέφει το ελάχιστο από δύο ακέραιους αριθμούς int min(int a, int b) { if (a < b) { return a; } else { return b; } } int main() { int x = 10; int y = 5; int max_value = max(x, y); // Κλήση της συνάρτησης max int min_value = min(x, y); // Κλήση της συνάρτησης min std::cout << "Max value: " << max_value << std::endl; // Εκτύπωση του μέγιστου αριθμού std::cout << "Min value: " << min_value << std::endl; // Εκτύπωση του ελάχιστου αριθμού return 0; }
Ο παραπάνω κώδικας περιέχει τις εξής λειτουργίες:
- Δημιουργεί δύο συναρτήσεις
max
καιmin
που παίρνουν δύο ακέραιους αριθμούς ως παραμέτρους και επιστρέφουν αντίστοιχα το μεγαλύτερο και το μικρότερο από τους δύο αριθμούς. - Στη συνάρτηση
main
ορίζονται δύο μεταβλητέςx
καιy
με τιμές 10 και 5 αντίστοιχα. - Καλείται η συνάρτηση
max
με παραμέτρους τις μεταβλητέςx
καιy
, και το αποτέλεσμα αποθηκεύεται στη μεταβλητήmax_value
. - Καλείται η συνάρτηση
min
με παραμέτρους τις μεταβλητέςx
καιy
, και το αποτέλεσμα αποθηκεύεται στη μεταβλητήmin_value
. - Εκτυπώνονται τα μηνύματα “Max value: ” και “Min value: ” στην οθόνη, ακολουθούμενα από τις τιμές των
max_value
καιmin_value
αντίστοιχα. - Η συνάρτηση
main
επιστρέφει την τιμή 0, υποδηλώνοντας επιτυχή ολοκλήρωση του προγράμματος.
Ουσιαστικά, ο κώδικας εκτελεί την αντιστοίχιση των μεταβλητών x
και y
με τις συναρτήσεις max
και min
αντίστοιχα, υπολογίζει το μέγιστο και το ελάχιστο από τους δύο αριθμούς, και εκτυπώνει τα αποτελέσματα στην οθόνη.
Όταν εκτελέσετε τον παραπάνω κώδικα, το αποτέλεσμα που θα εμφανιστεί στην οθόνη είναι:
Max value: 10 Min value: 5
Αυτό συμβαίνει επειδή οι μεταβλητές x
και y
έχουν αρχικές τιμές 10 και 5 αντίστοιχα. Κατά συνέπεια, η συνάρτηση max
επιστρέφει τη μεγαλύτερη τιμή, που είναι το x
, δηλαδή 10. Αντίστοιχα, η συνάρτηση min
επιστρέφει τη μικρότερη τιμή, που είναι το y
, δηλαδή 5.
Επομένως, στην οθόνη θα εμφανιστεί η παραπάνω έξοδος.
cmath στη C++ είναι μια κεφαλίδα (header) που παρέχει πολλές χρήσιμες συναρτήσεις για μαθηματικούς υπολογισμούς. Ανάμεσα σε αυτές τις συναρτήσεις περιλαμβάνονται η sqrt (τετραγωνική ρίζα), η round (στρογγυλοποίηση αριθμού) και η log (φυσικός λογάριθμος). Οι συναρτήσεις αυτές είναι χρήσιμες για να εκτελέσουμε μαθηματικούς υπολογισμούς σε προγράμματα C++. Προσθέτοντας την κεφαλίδα cmath στο πρόγραμμά μας, μπορούμε να χρησιμοποιήσουμε αυτές τις συναρτήσεις για να εκτελέσουμε αριθμητικές λειτουργίες με ακρίβεια και αξιοπιστία.
Παρακάτω έχουμε ένα ολοκληρωμένο παράδειγμα που χρησιμοποιεί τις συναρτήσεις της κεφαλίδας cmath στη C++:
#include <iostream> #include <cmath> int main() { double number = 16.25; // Υπολογισμός της τετραγωνικής ρίζας double squareRoot = sqrt(number); std::cout << "Τετραγωνική ρίζα του " << number << " είναι: " << squareRoot << std::endl; // Στρογγυλοποίηση του αριθμού προς τον πλησιέστερο ακέραιο double roundedNumber = round(number); std::cout << "Στρογγυλοποιημένος αριθμός: " << roundedNumber << std::endl; // Υπολογισμός του φυσικού λογαρίθμου double logarithm = log(number); std::cout << "Φυσικός λογάριθμος του " << number << " είναι: " << logarithm << std::endl; return 0; }
Ο παραπάνω κώδικας υπολογίζει και εκτυπώνει τα εξής στοιχεία για έναν δοθέντα αριθμό:
- Τετραγωνική ρίζα (square root): Χρησιμοποιεί τη συνάρτηση
sqrt()
από την κεφαλίδαcmath
για να υπολογίσει την τετραγωνική ρίζα ενός αριθμού. Το αποτέλεσμα εκτυπώνεται στην οθόνη. - Στρογγυλοποίηση (rounding): Χρησιμοποιεί τη συνάρτηση
round()
από την κεφαλίδαcmath
για να στρογγυλοποιήσει έναν αριθμό προς τον πλησιέστερο ακέραιο. Το αποτέλεσμα εκτυπώνεται στην οθόνη. - Φυσικός λογάριθμος (natural logarithm): Χρησιμοποιεί τη συνάρτηση
log()
από την κεφαλίδαcmath
για να υπολογίσει τον φυσικό λογάριθμο ενός αριθμού. Το αποτέλεσμα εκτυπώνεται στην οθόνη.
Ο κώδικας αρχικοποιεί έναν αριθμό (number
) με τιμή 16.25. Έπειτα, χρησιμοποιεί τις παραπάνω συναρτήσεις για να υπολογίσει και να εκτυπώσει την τετραγωνική ρίζα του αριθμού, τον στρογγυλοποιημένο αριθμό και τον φυσικό λογάριθμο του αριθμού.
Το αποτέλεσμα που εκτυπώνεται στην οθόνη για τον παραπάνω κώδικα είναι:
Τετραγωνική ρίζα του αριθμού: 4.03113 Στρογγυλοποιημένος αριθμός: 16 Φυσικός λογάριθμος του αριθμού: 2.79176
Αυτά τα αποτελέσματα είναι ενδεικτικά και μπορεί να διαφέρουν ανάλογα με την υλοποίηση της βιβλιοθήκης cmath στο συγκεκριμένο περιβάλλον εκτέλεσης.
Παραδείγματα χρήσης συναρτήσεων από την κεφαλίδα <cmath>:
#include <iostream> #include <cmath> int main() { double x = 4.0; double y = 2.5; // Τετραγωνική ρίζα double square_root_x = sqrt(x); std::cout << "The square root of " << x << " is: " << square_root_x << std::endl; // Στρογγυλοποίηση double rounded_y = round(y); std::cout << "The rounded value of " << y << " is: " << rounded_y << std::endl; // Φυσικός λογάριθμος double natural_log_x = log(x); std::cout << "The natural logarithm of " << x << " is: " << natural_log_x << std::endl; return 0; }
Ο παραπάνω κώδικας υπολογίζει και εκτυπώνει την τετραγωνική ρίζα ενός αριθμού, τη στρογγυλοποίηση μιας τιμής και τον φυσικό λογάριθμο ενός αριθμού.
Αρχικά, δηλώνονται δύο μεταβλητές τύπου double
, το x
με τιμή 4.0 και το y
με τιμή 2.5.
Στη συνέχεια, υπολογίζεται η τετραγωνική ρίζα της μεταβλητής x
χρησιμοποιώντας τη συνάρτηση sqrt()
από τη βιβλιοθήκη <cmath>
. Το αποτέλεσμα αποθηκεύεται στη μεταβλητή square_root_x
και εκτυπώνεται μαζί με το αντίστοιχο κείμενο.
Έπειτα, γίνεται η στρογγυλοποίηση της μεταβλητής y
με τη χρήση της συνάρτησης round()
από την ίδια βιβλιοθήκη. Το αποτέλεσμα αποθηκεύεται στη μεταβλητή rounded_y
και εκτυπώνεται μαζί με το αντίστοιχο κείμενο.
Τέλος, υπολογίζεται ο φυσικός λογάριθμος της μεταβλητής x
με τη χρήση της συνάρτησης log()
από την ίδια βιβλιοθήκη. Το αποτέλεσμα αποθηκεύεται στη μεταβλητή natural_log_x
και εκτυπώνεται μαζί με το αντίστοιχο κείμενο.
Ο κώδικας ολοκληρώνεται με την επιστροφή της τιμής 0 από τη συνάρτηση main()
.
The square root of 4 is: 2 The rounded value of 2.5 is: 2 The natural logarithm of 4 is: 1.38629
[adinserter block=”2″]
Μια λίστα με άλλες δημοφιλείς μαθηματικές συναρτήσεις (από τη βιβλιοθήκη <cmath>
) μπορεί να βρεθεί στον παρακάτω πίνακα:
Συνάρτηση | Περιγραφή |
---|---|
abs(x) | Απόλυτη τιμή του x |
acos(x) | Αντίστροφος συναρτήσεις κοσίνου του x |
asin(x) | Αντίστροφος συναρτήσεις ημιτόνου του x |
atan(x) | Αντίστροφος συναρτήσεις εφαπτομένης του x |
atan2(y, x) | Αντίστροφος συναρτήσεις εφαπτομένης του y/x |
ceil(x) | Στρογγυλοποίηση του x προς τα πάνω |
cos(x) | Συνάρτηση κοσίνου του x |
cosh(x) | Υπερβολική συνάρτηση κοσίνου του x |
exp(x) | Έκθετος του x (e^x) |
fabs(x) | Απόλυτη τιμή του x (με float/double) |
floor(x) | Στρογγυλοποίηση του x προς τα κάτω |
fmod(x, y) | Υπόλοιπο της διαίρεσης x/y (με float/double) |
log(x) | Φυσικός λογάριθμος του x |
log10(x) | Δεκαδικός λογάριθμος του x |
pow(x, y) | x εις την δύναμη y (x^y) |
sin(x) | Συνάρτηση ημιτόνου του x |
sinh(x) | Υπερβολική συνάρτηση ημιτόνου του x |
sqrt(x) | Τετραγγωνιακή ρίζα του x |
tan(x) | Συνάρτηση εφαπτομένης του x |
tanh(x) | Υπερβολική συνάρτηση εφαπτομένης του x |
trunc(x) | Αποκοπή των δεκαδικών ψηφίων του x |
Σημείωση: Για να χρησιμοποιήσετε αυτές τις συναρτήσεις, πρέπει να συμπεριλάβετε τη βιβλιοθήκη <cmath>
στο πρόγραμμά σας:
#include <cmath>
Ένας τελεστής σύγκρισης, όπως ο τελεστής μεγαλύτερος από (>) μπορεί να χρησιμοποιηθεί για να αξιολογηθεί αν μια λογική έκφραση (ή μια μεταβλητή) είναι αληθής ή ψευδής. Αν η έκφραση είναι αληθής, η τιμή 1 (true) επιστρέφεται, ενώ αν είναι ψευδής, επιστρέφεται η τιμή 0 (false).
Αυτό είναι χρήσιμο για την κατασκευή λογικών συνθηκών και την λήψη αποφάσεων στο πρόγραμμα, βάσει της αληθοφανούς ή ψευδούς αξιολόγησης των λογικών εκφράσεων. Μπορείτε να συνδυάσετε πολλαπλές λογικές εκφράσεις με λογικούς τελεστές, όπως οι τελεστές “και” (&&) και “ή” (||), για περισσότερη ευελιξία και πολυπλοκότητα στις συνθήκες σας.
Η χρήση λογικών εκφράσεων σας επιτρέπει να ελέγξετε συνθήκες, να εκτελέσετε κώδικα μόνο αν η συνθήκη είναι αληθής, και να καθορίσετε τη ροή του προγράμματος βάσει των αποτελεσμάτων των λογικών αξιολογήσεων.
Παράδειγμα:
#include <iostream> int main() { int x = 5; // Δημιουργία μεταβλητής x και ανάθεση τιμής 5 int y = 10; // Δημιουργία μεταβλητής y και ανάθεση τιμής 10 bool is_greater = x > y; // Έλεγχος αν το x είναι μεγαλύτερο από το y και αποθήκευση του αποτελέσματος στη μεταβλητή is_greater std::cout << "Is x greater than y? " << is_greater << std::endl; // Εκτύπωση κειμένου και της τιμής της μεταβλητής is_greater return 0; }
Ο παραπάνω κώδικας συγκρίνει τις τιμές των μεταβλητών x
και y
και αποθηκεύει το αποτέλεσμα σε μια μεταβλητή με την ονομασία is_greater
τύπου bool
. Στη συνέχεια, εμφανίζει το αποτέλεσμα με ένα μήνυμα κειμένου χρησιμοποιώντας την std::cout
. Αν το x
είναι μεγαλύτερο από το y
, τότε η τιμή της μεταβλητής is_greater
θα είναι true
και θα εκτυπωθεί το μήνυμα “Is x greater than y? 1”. Αν το x
δεν είναι μεγαλύτερο από το y
, τότε η τιμή της μεταβλητής is_greater
θα είναι false
και θα εκτυπωθεί το μήνυμα “Is x greater than y? 0”.
Έξοδος:
Is x greater than y? 0
Στο παραπάνω παράδειγμα, η λογική έκφραση x > y
είναι ψευδής (false), καθώς η τιμή του x
δεν είναι μεγαλύτερη από την τιμή του y
. Επομένως, η μεταβλητή is_greater
παίρνει την τιμή 0 και η εντολή εξόδου std::cout
εκτυπώνει “Is x greater than y? 0”.
[adinserter block=”3″]
Ακόμη πιο απλά:
Μπορείτε να χρησιμοποιήσετε τη λογική τιμή απευθείας σε μια εντολή εξόδου, χωρίς να χρειάζεται να δηλώσετε μια επιπλέον μεταβλητή. Παραδείγματα:
#include <iostream> int main() { int x = 5; // Δημιουργία μεταβλητής x με τιμή 5 int y = 10; // Δημιουργία μεταβλητής y με τιμή 10 // Εκτύπωση αποτελέσματος σύγκρισης x > y std::cout << "Is x greater than y? " << (x > y) << std::endl; // Εκτύπωση αποτελέσματος σύγκρισης x < y std::cout << "Is x less than y? " << (x < y) << std::endl; // Εκτύπωση αποτελέσματος σύγκρισης x == y std::cout << "Is x equal to y? " << (x == y) << std::endl; return 0; }
Ο παραπάνω κώδικας συγκρίνει τις τιμές των μεταβλητών x
και y
και εκτυπώνει τα αποτελέσματα των συγκρίσεων. Ακολουθεί μια επεξήγηση του κάθε τμήματος του κώδικα:
- Ορίζονται οι μεταβλητές
x
καιy
και αναθέτονται οι τιμές 5 και 10 αντίστοιχα. - Χρησιμοποιώντας την εντολή
std::cout
, εκτυπώνεται το μήνυμα “Is x greater than y? “. - Η σύγκριση
(x > y)
εκτελείται και το αποτέλεσμα (true ή false) εμφανίζεται ως 1 ή 0 αντίστοιχα. - Χρησιμοποιώντας ξανά την
std::cout
, εκτυπώνεται το μήνυμα “Is x less than y?”. - Η σύγκριση
(x < y)
εκτελείται και το αποτέλεσμα εμφανίζεται. - Χρησιμοποιώντας και πάλι την
std::cout
, εκτυπώνεται το μήνυμα “Is x equal to y?”. - Η σύγκριση
(x == y)
εκτελείται και το αποτέλεσμα εμφανίζεται.
Τελικά, το πρόγραμμα επιστρέφει την τιμή 0, υποδεικνύοντας ότι ολοκλήρωσε την εκτέλεσή του με επιτυχία.
Έξοδος:
Is x greater than y? 0 Is x less than y? 1 Is x equal to y? 0
Στα παραπάνω παραδείγματα, η λογική τιμή των συγκρίσεων αξιολογείται απευθείας στην εντολή εξόδου std::cout
, χρησιμοποιώντας παρενθέσεις για να διαχωρίσουμε τη σύγκριση από το υπόλοιπο κείμενο.
Στα παρακάτω παραδείγματα χρησιμοποιούμε τον τελεστή ίσον (==) για να αξιολογήσουμε μια έκφραση:
#include <iostream> int main() { int x = 5; // Ορισμός της μεταβλητής x με τιμή 5 int y = 5; // Ορισμός της μεταβλητής y με τιμή 5 bool is_equal = x == y; // Έλεγχος εάν οι μεταβλητές x και y είναι ίσες std::cout << "Is x equal to y? " << is_equal << std::endl; // Εκτύπωση του αποτελέσματος του ελέγχου return 0; }
Ο παραπάνω κώδικας εκτελεί την εξής λειτουργία:
- Ορίζονται δύο μεταβλητές
x
καιy
και ανατίθενται οι τιμές 5 σε αμφότερες. - Δημιουργείται μια μεταβλητή
is_equal
, η οποία παίρνει την τιμήtrue
ήfalse
ανάλογα με το αν οι μεταβλητέςx
καιy
είναι ίσες ή όχι. Αυτό γίνεται με τη χρήση του τελεστή==
, ο οποίος ελέγχει την ισότητα των δύο μεταβλητών. - Χρησιμοποιείται η
std::cout
για να εκτυπωθεί ένα μήνυμα που δηλώνει εάν οι μεταβλητέςx
καιy
είναι ίσες ή όχι. Η τιμή της μεταβλητήςis_equal
εμφανίζεται χρησιμοποιώντας τον τελεστή<<
. - Η εκτέλεση του προγράμματος ολοκληρώνεται και επιστρέφεται η τιμή 0.
Ουσιαστικά, ο κώδικας ελέγχει αν οι δύο μεταβλητές x
και y
έχουν την ίδια τιμή και εκτυπώνει αντίστοιχο μήνυμα.
Έξοδος:
Is x equal to y? 1
Παράδειγμα
#include <iostream> int main() { int age = 25; // Ορίζουμε τη μεταβλητή "age" και αναθέτουμε την τιμή 25 int voting_age = 18; // Ορίζουμε τη μεταβλητή "voting_age" και αναθέτουμε την τιμή 18 bool can_vote = age >= voting_age; // Ανάθεση της λογικής τιμής true ή false στη μεταβλητή "can_vote" ανάλογα με τη σχέση age >= voting_age std::cout << "Can this person vote? " << can_vote << std::endl; // Εκτύπωση κειμένου και της τιμής της μεταβλητής "can_vote" return 0; // Επιστροφή της τιμής 0 για να υποδηλώσει επιτυχή ολοκλήρωση του προγράμματος }
Ο παραπάνω κώδικας εκτελεί τις εξής ενέργειες:
- Δημιουργεί δύο μεταβλητές, τη μεταβλητή “age” με τιμή 25 και τη μεταβλητή “voting_age” με τιμή 18.
- Ελέγχει αν η τιμή της μεταβλητής “age” είναι μεγαλύτερη ή ίση με την τιμή της μεταβλητής “voting_age” και αποθηκεύει το αποτέλεσμα στη μεταβλητή “can_vote”.
- Χρησιμοποιεί την εντολή εξόδου της C++ (
std::cout
) για να εκτυπώσει το κείμενο “Can this person vote?” ακολουθούμενο από την τιμή της μεταβλητής “can_vote”. Η εντολήstd::endl
χρησιμοποιείται για να προσθέσει έναν αλλαγή γραμμής μετά την εκτύπωση. - Επιστρέφει την τιμή 0, υποδηλώνοντας την επιτυχή ολοκλήρωση του προγράμματος στο σημείο εκτέλεσης της
main
συνάρτησης.
Ο κώδικας ελέγχει αν μια ηλικία (στην περίπτωση αυτή 25) είναι αρκετά μεγάλη ώστε να δώσει το δικαίωμα ψήφου (ηλικία ψήφου 18). Εκτυπώνει το αποτέλεσμα στην οθόνη ως αληθές (1) ή ψευδές (0) ανάλογα με την απάντηση της συνθήκης.
Έξοδος:
Can this person vote? 1
Μια ακόμη καλύτερη προσέγγιση θα ήταν να τυλίξουμε τον κώδικα που έχουμε ήδη γράψει σε ένα if…else statement, ώστε να μπορούμε να εκτελούμε διαφορετικές ενέργειες ανάλογα με το αποτέλεσμα:
#include <iostream> int main() { int age = 25; // Η ηλικία του ατόμου int voting_age = 18; // Η ηλικία που απαιτείται για το δικαίωμα ψήφου if (age >= voting_age) { // Έλεγχος αν η ηλικία είναι μεγαλύτερη ή ίση με την ηλικία ψήφου std::cout << "This person can vote!" << std::endl; // Εκτύπωση μηνύματος αν μπορεί να ψηφίσει } else { std::cout << "This person is not old enough to vote." << std::endl; // Εκτύπωση μηνύματος αν δεν μπορεί να ψηφίσει } return 0; }
Ο παραπάνω κώδικας ελέγχει την ηλικία ενός ατόμου και εμφανίζει αν μπορεί να ψηφίσει ή όχι, ανάλογα με την τιμή των μεταβλητών “age” και “voting_age”.
Αρχικά, ορίζονται δύο μεταβλητές: η “age” που αντιπροσωπεύει την ηλικία του ατόμου και η “voting_age” που αντιπροσωπεύει την ηλικία που απαιτείται για το δικαίωμα ψήφου.
Στη συνέχεια, χρησιμοποιείται η δομή ελέγχου “if” για να ελεγχθεί αν η ηλικία (age) είναι μεγαλύτερη ή ίση με την ηλικία ψήφου (voting_age). Αν αυτή η συνθήκη είναι αληθής, τότε εκτελείται ο κώδικας μέσα στο πρώτο μπλοκ της δομής “if”, ο οποίος εκτυπώνει το μήνυμα “This person can vote!”.
Αν η συνθήκη είναι ψευδής, τότε εκτελείται ο κώδικας μέσα στο μπλοκ “else”, ο οποίος εκτυπώνει το μήνυμα “This person is not old enough to vote.”.
Τέλος, η συνάρτηση “main” επιστρέφει την τιμή 0, υποδεικνύοντας ότι το πρόγραμμα ολοκληρώθηκε με επιτυχία.
Έξοδος:
This person can vote!