Задачка по С++Преподаватель пишет, что программка не подходит задаче"ФункцииВводится

Задачка по С++
Преподаватель пишет, что программа не подходит задачке
"Функции
Вводится последовательность из N целых чисел. Отыскать среднее арифметическое его цифр."
В документе ворд код и тут оставлю:
// f1.cpp: определяет точку входа для консольного приложения.
//

include "stdafx.h"
include
using namespace std;
bool pr ( intamp; s , intamp; i)

bool p = true;
int n , a;
cout lt;lt; "n = ";
while (cin gt;gt; n)

for ( a = 2 ; alt;=n ; a++)

if ((n%a != 0) (n == 2))

cout lt;lt; "Обычное" lt;lt; endl lt;lt; endl;
s=s+n;
i=i+1;
else

p=false;
cout lt;lt; "Не обычное" lt;lt; endl lt;lt; endl;


break;


return p;

float arif (int s , int i)

cout lt;lt; i lt;lt; endl;
cout lt;lt; s lt;lt; endl;
return ( s/i );

int _tmain(int argc, _TCHAR* argv[])

setlocale (LC_ALL , "RUS");
int s=0 , i=0;
bool p = pr (s ,i);
if (p=true)
cout lt;lt; "Среднее арифметическое = " lt;lt; arif ( s , i );
system ("pause");
return 0;

Задать свой вопрос
Вячеслав Полфинов
Но программка ведь и взаправду не подходит задачке, данный код только выводит текст вида Обычное/Не обычное[а в неких не выводит ничего, что странно], при этом число 123 для программы обычное, что, очевидно, не так. При этом код, сообразно условию задачки, должен выводить среднее арифметическое цифр.
Гадевосян Олег
При этом неясно, среднее арифметическое цифр чего - каждого числа, 1-го из чисел, всей последовательности, ещё чего-то?
Влад Прокопцов
Вторая часть кода выводит среднее арифметическое, обратите внимание. Допустим вводим1 2345Сумма 15
Диман Ластовский
чисел 5 среднее арифм 3
Пильзак Васька
IgorShap мб вы можете сделать правильно?
Кубенина Танечка
n = 1 2 3 4 5ПростоеПростоеНе простоеПростоеВот весь итог
София Ценина
Вы может не тот код прикрепили?..
Шаршанов Виктор
А, ну конечно, по эталону условие задачи в вопросе не совпадает с условием задачки в файле
1 ответ

/*Код подходит тексту задания из файла. Последовательность вводится в строчку через знаки пробела, нажатие кнопки Enter заканчивает ввод последовательности. Программка НЕ инспектирует корректность введенных данных*/

include lt;iostreamgt;

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 gt;gt; numb;

       if(is_prime(numb))

       

           sum += numb;

           n_of_pr_numb++;

       

    while (std::cin.peek() != '\n');

   std::cout lt;lt; "The arithmetic mean: " lt;lt; (n_of_pr_numb == 0 ? 0 : sum * 1. / n_of_pr_numb);

bool is_prime(const int n)

   if (n lt;= 1)

   

       return false;

   

   for (int i = 2; i lt;= pow(n, 1/2); i++)

   

       if (n % i == 0)

       

           return false;  

       

   

   return true;

_______________________________________

Главные ошибки/недочеты Вашей реализации:

  • В функции pr строчка for ( a = 2 ; alt;=n ; a++) неверна, т.к. на заключительном шаге число всегда будут сопоставлять с самим собой, правильно for ( a = 2 ; alt;n ; a++). Ну и нет смысла инспектировать до a=n-1, довольно проверить до n(об этом есть целая теорема).
  • По условию никакого вывода слов "Обычное/Не обычное" не требуется
  • Строчка cout lt;lt; "n = "; излишняя, т.к. даже если на ввод будет подано несколько чисел, на экран "n = " будет выведено только в начале. Превосходнее уточнить для юзера формат ввода.
  • Смысл функции arif мрачен, она выводит на консоль какие-то непонятные юзеру данные, потом отдаёт s/i[ВНИМАНИЕ! Так как s и i целочисленные, то s/i не является средним арифметическим, это будет только целая часть от него. Вернее s * 1./i либо static_castlt;doublegt;(s)/i], а потом выводит это значение. Зачем разрывать cout на две функции - мрачно
  • Ввод данных не обязан находиться в функции проверки числа на простоту(да и смысл разбиения программки на функции исчезает)
, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт