/*Код соответствует тексту задания из файла. Последовательность вводится в строку через знаки пробела, нажатие клавиши 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 на две функции - неясноВвод данных не должен находиться в функции проверки числа на простоту(да и смысл разбиения программы на функции пропадает)
N 1
1. 3 кбайт = 2048 байт + 7616 бит
переводим 3 кбайта в байты
A = 3 * 1000 = 3000 байт
вычитаем любое кол-во байтов и переводим в биты (при условии C < B, C - любое значение)
предположим С = 952
получаем 3 кбайт = 2048 байт + 952 * 8 бит
ответ - выше
------------
2. 2,56 кбайт = 2560 байт = 20480 бит
Решение
20480 / 8 = 2560 / 1000 = 2,56 кбайт
------------
N 2
Длинная строки полученной телеграммы " встречайте вагон7 " (если вы не напутали с пробелами и расстановкой цифры) равна 19 символов (пробел тоже символ), как нам известно размер одного символа равен 8 битам или 1 байту
Производим обычную арифметическую операцию:
19 * 1 = 19 байт (объем сообщения) или 19 * 8 = 152 бит
N 3
тоесть 6 бит на один символ, а значит
860 * 6 = 5160 / 8 = 645 / 1000 = 0,645 кбайт
N 4
Там предоставлены две кодировки, вам нужно сравнить таблицы кодировок
N5
Фаил = 30 кбайт
1стр = 30 * 64 = 1,92 кбайт
округлим размер одной страницы и получим 2
Кол-во страниц = 30 / 1,92 = 15,625 окгругляем вверх
ответ 15 страниц