Вы должны сделать вывод внутри циклов. Но, например, этот вывод выполняется вне цикла
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;
Более того, сравнение в приведенном выше утверждении if неверно. После цикла do-while значение num равно 0. Вам нужно написать
if (bar[i] == rev) // <===
cout << num;
Также вывод простых чисел также производится вне цикла. Более того, вы неправильно определяете простые числа. Например, 1
- это простое число в соответствии с вашим алгоритмом.
Также в первом цикле вы должны повторно инициализировать переменную rev до 0.
Программу можно написать следующим образом
#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;
}
Его вывод может быть
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