I'm trying to print the prime and the palindrome numbers from an array. It does not print me anything where am i wrong?!
#include <iostream>
#include <string>
using namespace std;
int main() {
int x, n, i, num, digit, rev=0;
int bar[100];
cout << "Cate numere trebuie sa fie in Array?:";
cin >> x;
for (i = 0; i < x; i++) {
cout << "bar[" << i << "]=";
cin >> bar[i];
}
for (i = 0; i < x; i++) {
num=bar[i];
do
{
digit = num % 10;
rev = (rev * 10) + digit;
num = num / 10;
} while (num != 0);
}
if (num == rev)
cout << num;
int y;
bool prim = true;
for (y = 2; y <= bar[i] / 2; ++y)
{
if (bar[i] % y == 0)
{
prim = false;
}
}
if (prim)
cout << bar[i];
return 0;
}
You have to do the output inside loops. But for example this output is made outside a loop
for (i = 0; i < x; i++) {
num=bar[i];
do
{
digit = num % 10;
rev = (rev * 10) + digit;
num = num / 10;
} while (num != 0);
}
if (num == rev) // <===
cout << num;
Moreover the comparison in the if statement above is incorrect. After the do-while loop the value of num is equal to 0. You need to write
if (bar[i] == rev) // <===
cout << num;
Also the output of prime numbers also is made outside a loop. Moreover you are determining prime numbers incorrectly. For example 1
is a prime number according to your algorithm.
Also within the first loop you have to reinitialize the variable rev to 0.
The program can be written the following way
#include <iostream>
int main()
{
const size_t N = 100;
int bar[N];
cout << "Cate numere trebuie sa fie in Array?: ";
size_t n = 0;
std::cin >> n;
if ( N < n ) n = N;
for ( size_t i = 0; i < n; i++ )
{
std::cout << "bar[" << i << "] = ";
std::cin >> bar[i];
}
std::cout << '\n';
for ( size_t i = 0; i < n; i++ )
{
const int Base = 10;
int num = bar[i];
int rev = 0;
do
{
int digit = num % Base;
rev = rev * Base + digit;
} while ( num /= Base );
if ( bar[i] == rev ) std::cout << bar[i] << ' ';
}
std::cout << '\n';
for ( size_t i = 0; i < n; i++ )
{
bool prime = bar[i] % 2 == 0 ? bar[i] == 2 : bar[i] != 1;
for ( int j = 3; prime && j <= bar[i] / j; j += 2 )
{
prime = bar[i] % j != 0;
}
if ( prime ) std::cout << bar[i] << ' ';
}
std::cout << '\n';
return 0;
}
Its output might be
Cate numere trebuie sa fie in Array?: 10
bar[0] = 121
bar[1] = 11
bar[2] = 131
bar[3] = 13
bar[4] = 143
bar[5] = 14
bar[6] = 1551
bar[7] = 10
bar[8] = 1234321
bar[9] = 99
121 11 131 1551 1234321 99
11 131 13