School-Coding-Cpp/funzioni/descrizione_numero.cpp

96 lines
2.6 KiB
C++

/*
AUTORE: Manuel Vichi
Descrizione di un numero
*/
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
//Function to calculate the square of a number (because why not??)
int square(int x) {
return x * x;
}
//Boolean function to determinate if a number is automorphic
bool isAutomorphic(int num) {
int temp = num;
int digits = 0;
while (temp > 0) {
digits++;
temp /= 10;
}
int lastDigits = square(num) % static_cast<int>(pow(10, digits));
return lastDigits == num;
}
//Function to check if a number is prime
bool isPrimeNumber(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
//Function to check if a number is perfect
bool isPerfectNumber(int n) {
if (n <= 1)
return false;
int sum = 0;
for (int i = 1; i <= n / 2; ++i)
if (n % i == 0)
sum += i;
return sum == n;
}
//Function to reverse the number
int reverseNumber(int number) {
int original = number;
int reversed = 0;
while (number > 0) {
int digit = number % 10;
reversed = reversed * 10 + digit;
n /= 10;
}
return reversed;
}
//Function to check if a number is palindrome
bool isPalindrome(int n) {
int original = n;
int reversed = reverseNumber(n);
return original == reversed;
}
//Main function, asks in input the number and prints if it's automorphic or not
int main() {
int numero;
cout << "Inserisci il numero: ";
cin >> numero;
cout << endl;
cout << "Il numero " << numero << " fornito in input ha le seguenti caratteristiche:" << endl;
if (isAutomorphic(numero))
cout << "Il numero e' automorfo" << endl;
else
cout << "Il numero non e' automorfo" << endl;
if (isPrimeNumber(numero))
cout << "Il numero e' primo" << endl;
else
cout << "Il numero non e' primo" << endl;
if (isPerfectNumber(numero))
cout << "Il numero e' perfetto" << endl;
else
cout << "Il numero non e' perfetto" << endl;
if (isPalindrome(numero))
cout << "Il numero e' palindromo" << endl;
else
cout << "Il numero non e' palindromo" << endl;
cout << endl; //Just to separate the output of the program
cout << "Il numero " << numero << " invertito e': " << reverseNumber(numero) << endl;
system("pause"); //Needed on Windows to display the console output if the executable is not runned from a console
return 0;
}