C/C++

Напишите программу, статич. массив

Дан одномерный массив А неупорядоченных натуральных чисел. Если все числа, которые больше среднего арифметического элементов массива, являются простыми, то вывести на экран сообщение «Да», иначе — сообщение «Нет».
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define BUFFER 5
_Bool is_prime(unsigned x) {
_Bool p;
if (x == 1) p = false;
else if (x == 2) p = true;
else if (~x & 1) p = false;
else if (x < 6) p = true;
else if (0 == x % 3 || 0 == x % 5) p = false;
else {
unsigned n;
for (n = 3; n * n <= x && x % n; n += 2) { ; }
p = n * n > x;
}
return p;
}
int main() {
int mn = 1;
int mx = 11;
int i;
int a[BUFFER];
double sum;
double avg;
srand((unsigned)time(NULL));
for (i = 0; i < BUFFER; ++i) a[i] = mn + rand() % mx;
for (i = 0; i < BUFFER; ++i) printf("%4i", a[i]);
puts("");
sum = 0;
for (i = 0; i < BUFFER; ++i) sum += a[i];
avg = sum / BUFFER;
printf("Average: %.2lf\n", avg);
i = 0;
while (i < BUFFER) {
if (a[i] > avg && !is_prime(a[i])) break;
++i;
}
puts(i == BUFFER ? "Yes!" : "No!");
system("pause > nul");
}
Алексей Валерьевич
Алексей Валерьевич
97 855
Лучший ответ
Александр Калашников А можно словами объяснить что тут происходит? пожалуйста
float n=0, sr=0;
bool notSimple=false;
int i,a[10]={1,3,3,5,5,7,7,9,9,0};
for (i=0;i<=9;i++)
sr=sr+a[i];
sr=sr/(float)9;
for (i=0;i<=9;i++){
n=a[i];
if (n<=sr) continue;

for (int i=2;i<sqrt(n);i++)
{
if ((int)n%i==0)
{
cout << "НЕТ : " <<n;
notSimple=true;
break;
}
}
if (notSimple) break;

}
if(!notSimple) cout<<"ДА";