/*Код соответствует тексту задания из файла. Последовательность вводится в строку через знаки пробела, нажатие клавиши Enter заканчивает ввод последовательности. Программа НЕ проверяет корректность введенных данных*/
#include <iostream>
bool is_prime(const int n);
int main(int argc, char* argv[])
{
int numb, n_of_pr_numb = 0;
long int sum = 0;
do
{
std::cin >> numb;
if(is_prime(numb))
{
sum += numb;
n_of_pr_numb++;
}
} while (std::cin.peek() != '\n');
std::cout << "The arithmetic mean: " << (n_of_pr_numb == 0 ? 0 : sum * 1. / n_of_pr_numb);
}
bool is_prime(const int n)
{
if (n <= 1)
{
return false;
}
for (int i = 2; i <= pow(n, 1/2); i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
Основные ошибки/недочеты Вашей реализации:
В функции pr строка for ( a = 2 ; a<=n ; a++) неверна, т.к. на последнем шаге число всегда будут сравнивать с самим собой, правильно for ( a = 2 ; a<n ; a++). Ну и нет смысла проверять до a=n-1, достаточно проверить до √n(об этом есть целая теорема).По условию никакого вывода слов "Простое/Не простое" не требуетсяСтрока cout << "n = "; лишняя, т.к. даже если на ввод будет подано несколько чисел, на экран "n = " будет выведено лишь в начале. Лучше уточнить для пользователя формат ввода.Смысл функции arif неясен, она выводит на консоль какие-то непонятные пользователю данные, затем возвращает s/i[ВНИМАНИЕ! Так как s и i целочисленные, то s/i не является средним арифметическим, это будет лишь целая часть от него. Правильнее s * 1./i или static_cast<double>(s)/i], а затем выводит это значение. Зачем разрывать cout на две функции - неясноВвод данных не должен находиться в функции проверки числа на простоту(да и смысл разбиения программы на функции пропадает)
Не знаю длинный это рассказ или нет но попробую. ну допустим мы создали прототип, но прототип будет отражать только часть функций объекта которая нам нужна. например глобус. по сути это модель земли но мы пренебрегаем размерами и мелкими объектами для того что бы показать что она имеет форму эллипса, и получается что модель нужна нам для отображения тех или иных функций объекта для решения наших задач. почему множество ? потому что иногда бывает так что нужно рассмотреть объект с разных сторон ( не в прямом смысле).
/*Код соответствует тексту задания из файла. Последовательность вводится в строку через знаки пробела, нажатие клавиши Enter заканчивает ввод последовательности. Программа НЕ проверяет корректность введенных данных*/
#include <iostream>
bool is_prime(const int n);
int main(int argc, char* argv[])
{
int numb, n_of_pr_numb = 0;
long int sum = 0;
do
{
std::cin >> numb;
if(is_prime(numb))
{
sum += numb;
n_of_pr_numb++;
}
} while (std::cin.peek() != '\n');
std::cout << "The arithmetic mean: " << (n_of_pr_numb == 0 ? 0 : sum * 1. / n_of_pr_numb);
}
bool is_prime(const int n)
{
if (n <= 1)
{
return false;
}
for (int i = 2; i <= pow(n, 1/2); i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
Основные ошибки/недочеты Вашей реализации:
В функции pr строка for ( a = 2 ; a<=n ; a++) неверна, т.к. на последнем шаге число всегда будут сравнивать с самим собой, правильно for ( a = 2 ; a<n ; a++). Ну и нет смысла проверять до a=n-1, достаточно проверить до √n(об этом есть целая теорема).По условию никакого вывода слов "Простое/Не простое" не требуетсяСтрока cout << "n = "; лишняя, т.к. даже если на ввод будет подано несколько чисел, на экран "n = " будет выведено лишь в начале. Лучше уточнить для пользователя формат ввода.Смысл функции arif неясен, она выводит на консоль какие-то непонятные пользователю данные, затем возвращает s/i[ВНИМАНИЕ! Так как s и i целочисленные, то s/i не является средним арифметическим, это будет лишь целая часть от него. Правильнее s * 1./i или static_cast<double>(s)/i], а затем выводит это значение. Зачем разрывать cout на две функции - неясноВвод данных не должен находиться в функции проверки числа на простоту(да и смысл разбиения программы на функции пропадает)ну допустим мы создали прототип, но прототип будет отражать только часть функций объекта которая нам нужна. например глобус. по сути это модель земли но мы пренебрегаем размерами и мелкими объектами для того что бы показать что она имеет форму эллипса, и получается что модель нужна нам для отображения тех или иных функций объекта для решения наших задач. почему множество ? потому что иногда бывает так что нужно рассмотреть объект с разных сторон ( не в прямом смысле).