-
Вопрос по информатике:
Задача по С++
Преподаватель пишет, что программа не соответствует задаче
"Функции
Вводится последовательность из N целых чисел. Найти среднее арифметическое его цифр."
В документе ворд код и тут оставлю:
// f1.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include
using namespace std;
bool pr ( int& s , int& i)
{
bool p = true;
int n , a;
cout << "n = ";
while (cin >> n)
{
for ( a = 2 ; a<=n ; a++)
{
if ((n%a != 0) || (n == 2))
{
cout << "Простое" << endl << endl;
s=s+n;
i=i+1;
} else
{
p=false;
cout << "Не простое" << endl << endl;
}
break;
}
}
return p;
}
float arif (int s , int i)
{
cout << i << endl;
cout << s << 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 << "Среднее арифметическое = " << arif ( s , i );
system ("pause");
return 0;
}
-
Автор:
mckennagarza
-
-
/*Код соответствует тексту задания из файла. Последовательность вводится в строку через знаки пробела, нажатие клавиши 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() != '');
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 на две функции - неясно
- Ввод данных не должен находиться в функции проверки числа на простоту(да и смысл разбиения программы на функции пропадает)
-
Вопрос по математике:
№34. На трёх опытных участках вырастили 2 261 цветок. На первом участке выросло
1120 цветов. на втором - в 2 раза меньше, остальные на третьем участке. Сколько цветов
вырастили на третьем участке?
35. Для учащихся начальных классов привезли 450 билетов: 2/5 в кукольный театр, 1/3
- в цирк, а остальные - в кинотеатр. Сколько билетов было в кинотеатр?
№36. Федя хочет пообедать в кафе. Меню показано на рисунке. Федя выбрал солянку,
пиццу и зелёный чай и отдал продавцу 500 рублей. Сколько рублей сдачи он должен
получить?
Пицца - Омлет - Суп-пюре -
230 руб 90 руб. + 140 руб.
Вареники - Солянка - Чай зелёный
120 руб
100 руб.
- 50 руб.
Решите пожалуйста ,ооочень нужно!!!-
Ответов: 1
-
5 лет назад
-
-
Вопрос по химии:
Какой спирт должен был окислен, чтобы получить альдегид следующего строения СН3-С=О
Н-
Ответов: 1
-
5 лет назад
-
-
Вопрос по математике:
Доведи, що значення виразу (3у - 0,8) • 0,4 - 0,2(5 - 2у) - (1,6у - 0,8) не залежить від значення змінної. срочно умоляю пжж-
Ответов: 1
-
5 лет назад
-
-
Вопрос по физике:
какие способы определения мощности существуют?Какой из них даёт более точный результат-
Ответов: 1
-
5 лет назад
-