2.4 Μαθηματικές συναρτήσεις στην γλώσσα C++

Η γλώσσα 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;
}

Ο παραπάνω κώδικας περιέχει τις εξής λειτουργίες:

  1. Δημιουργεί δύο συναρτήσεις max και min που παίρνουν δύο ακέραιους αριθμούς ως παραμέτρους και επιστρέφουν αντίστοιχα το μεγαλύτερο και το μικρότερο από τους δύο αριθμούς.
  2. Στη συνάρτηση main ορίζονται δύο μεταβλητές x και y με τιμές 10 και 5 αντίστοιχα.
  3. Καλείται η συνάρτηση max με παραμέτρους τις μεταβλητές x και y, και το αποτέλεσμα αποθηκεύεται στη μεταβλητή max_value.
  4. Καλείται η συνάρτηση min με παραμέτρους τις μεταβλητές x και y, και το αποτέλεσμα αποθηκεύεται στη μεταβλητή min_value.
  5. Εκτυπώνονται τα μηνύματα “Max value: ” και “Min value: ” στην οθόνη, ακολουθούμενα από τις τιμές των max_value και min_value αντίστοιχα.
  6. Η συνάρτηση 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;
}

Ο παραπάνω κώδικας υπολογίζει και εκτυπώνει τα εξής στοιχεία για έναν δοθέντα αριθμό:

  1. Τετραγωνική ρίζα (square root): Χρησιμοποιεί τη συνάρτηση sqrt() από την κεφαλίδα cmath για να υπολογίσει την τετραγωνική ρίζα ενός αριθμού. Το αποτέλεσμα εκτυπώνεται στην οθόνη.
  2. Στρογγυλοποίηση (rounding): Χρησιμοποιεί τη συνάρτηση round() από την κεφαλίδα cmath για να στρογγυλοποιήσει έναν αριθμό προς τον πλησιέστερο ακέραιο. Το αποτέλεσμα εκτυπώνεται στην οθόνη.
  3. Φυσικός λογάριθμος (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 και εκτυπώνει τα αποτελέσματα των συγκρίσεων. Ακολουθεί μια επεξήγηση του κάθε τμήματος του κώδικα:

  1. Ορίζονται οι μεταβλητές x και y και αναθέτονται οι τιμές 5 και 10 αντίστοιχα.
  2. Χρησιμοποιώντας την εντολή std::cout, εκτυπώνεται το μήνυμα “Is x greater than y? “.
  3. Η σύγκριση (x > y) εκτελείται και το αποτέλεσμα (true ή false) εμφανίζεται ως 1 ή 0 αντίστοιχα.
  4. Χρησιμοποιώντας ξανά την std::cout, εκτυπώνεται το μήνυμα “Is x less than y?”.
  5. Η σύγκριση (x < y) εκτελείται και το αποτέλεσμα εμφανίζεται.
  6. Χρησιμοποιώντας και πάλι την std::cout, εκτυπώνεται το μήνυμα “Is x equal to y?”.
  7. Η σύγκριση (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;
}

Ο παραπάνω κώδικας εκτελεί την εξής λειτουργία:

  1. Ορίζονται δύο μεταβλητές x και y και ανατίθενται οι τιμές 5 σε αμφότερες.
  2. Δημιουργείται μια μεταβλητή is_equal, η οποία παίρνει την τιμή true ή false ανάλογα με το αν οι μεταβλητές x και y είναι ίσες ή όχι. Αυτό γίνεται με τη χρήση του τελεστή ==, ο οποίος ελέγχει την ισότητα των δύο μεταβλητών.
  3. Χρησιμοποιείται η std::cout για να εκτυπωθεί ένα μήνυμα που δηλώνει εάν οι μεταβλητές x και y είναι ίσες ή όχι. Η τιμή της μεταβλητής is_equal εμφανίζεται χρησιμοποιώντας τον τελεστή <<.
  4. Η εκτέλεση του προγράμματος ολοκληρώνεται και επιστρέφεται η τιμή 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 για να υποδηλώσει επιτυχή ολοκλήρωση του προγράμματος
}

Ο παραπάνω κώδικας εκτελεί τις εξής ενέργειες:

  1. Δημιουργεί δύο μεταβλητές, τη μεταβλητή “age” με τιμή 25 και τη μεταβλητή “voting_age” με τιμή 18.
  2. Ελέγχει αν η τιμή της μεταβλητής “age” είναι μεγαλύτερη ή ίση με την τιμή της μεταβλητής “voting_age” και αποθηκεύει το αποτέλεσμα στη μεταβλητή “can_vote”.
  3. Χρησιμοποιεί την εντολή εξόδου της C++ (std::cout) για να εκτυπώσει το κείμενο “Can this person vote?” ακολουθούμενο από την τιμή της μεταβλητής “can_vote”. Η εντολή std::endl χρησιμοποιείται για να προσθέσει έναν αλλαγή γραμμής μετά την εκτύπωση.
  4. Επιστρέφει την τιμή 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!

23 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων