Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужно оформить задача в с++

2latteeee Ученик (167), открыт 2 недели назад
Вводится последовательность целых чисел, 0-конец последовательности. найти среднее арифметическое этих чисел, минимальное количество простых чисел и максимальное--неявляющихся простыми, используя собственные функции в с++
2 ответа
Мыслитель (9006) 2 недели назад
 #include <iostream> 
#include <vector>
#include <cmath>

using namespace std;

// Функция для проверки, является ли число простым
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}

// Функция для нахождения среднего арифметического чисел
double calculateAverage(const vector<int>& numbers) {
if (numbers.empty()) return 0;
int sum = 0;
for (int num : numbers) {
sum += num;
}
return static_cast<double>(sum) / numbers.size();
}

// Функция для нахождения минимального простого числа
int findMinPrime(const vector<int>& numbers) {
int minPrime = -1;
for (int num : numbers) {
if (isPrime(num)) {
if (minPrime == -1 || num < minPrime) {
minPrime = num;
}
}
}
return minPrime;
}

// Функция для нахождения максимального числа, не являющегося простым
int findMaxNonPrime(const vector<int>& numbers) {
int maxNonPrime = -1;
for (int num : numbers) {
if (!isPrime(num)) {
if (maxNonPrime == -1 || num > maxNonPrime) {
maxNonPrime = num;
}
}
}
return maxNonPrime;
}

int main() {
vector<int> numbers;
int num;

cout << "Введите последовательность целых чисел (0 для завершения):" << endl;
while (cin >> num && num != 0) {
numbers.push_back(num);
}

if (numbers.empty()) {
cout << "Последовательность пуста!" << endl;
return 0;
}

double average = calculateAverage(numbers);
int minPrime = findMinPrime(numbers);
int maxNonPrime = findMaxNonPrime(numbers);

cout << "Среднее арифметическое: " << average << endl;
if (minPrime != -1) {
cout << "Минимальное простое число: " << minPrime << endl;
} else {
cout << "Простые числа отсутствуют." << endl;
}
if (maxNonPrime != -1) {
cout << "Максимальное число, не являющееся простым: " << maxNonPrime << endl;
} else {
cout << "Все числа простые." << endl;
}

return 0;
}
Ксения Райт Гений (97171) 2 недели назад
Количества простых чисел и чисел, не являющихся простыми, в любой конечной последовательности целых чисел - это постоянные, а вот минимальные или максимальные они по Вашему мнению из чего? Поэтому ответ на Ваш вопрос такой:
 #include <cmath> 
#include <iostream>

using namespace std;

bool prime(int n)
{
if (n < 2) return false;
if (n == 2 || n == 3) return true;
if (n & 1)
{
int i, m = sqrt(n);
for (i = 3; i <= m; i += 2) if (n % i == 0) return false;
return true;
}
else return false;
}

int main()
{
double average = 0.;
int primes = 0, number, n = 0;
while (true)
{
cin >> number;
if (number)
{
++n;
average += number;
if (prime(number)) ++primes;
}
else break;
}
if (n) cout << "average: " << average / n
<< "\nprimes: " << primes <<
"\nnot-primes: " << n - primes << endl;
return 0;
}
Если бы требовалось вывести минимальное число среди простых и максимальное непростое число, то тогда бы могли так и написа́ть! Понятно, что для этого в вышеприведённый код придётся вносить существенные коррективы...
Похожие вопросы