Входные данные: 2 3 12 6 7 4 1 1 5 0 Нужно найти: Количество четных чисел в этой последовательности. сумму нечетных чисел и максимальное число.
Проверьте код, пожалуйста. Что можно изменить?
#include <iostream>
using namespace std;
int
main ()
{
int a, k = 0, n = 0, max = 0;
while (a != 0)
{
cin >> a;
if (a % 2 == 0 && a > 0)
{
k++;
}
else
{
n = n + a;
}
if (a > max && a != 0)
{
max = a;
}
}
cout << k << "\n";
cout << n << "\n";
cout << max;
}
Имена переменных не несут никакого смысла и чтобы понять что какая буква обозначает нужно прочесть что с этой переменной делаются. Имена типа evenAmount, oddSum, nextNumber были бы лучше
Отрицательные числа тоже могут быть четными и нечетными, в первом if'е второе условие нарушает условие задачи
a != 0 в третьем условии не соответствует условию задачи. Так же все введенные числа могут быть отрицательными, что выдаст неправильный ответ на наибольшее число (так как стартовое значение, ноль, останется значением переменной max). Лучшим решением было бы инициализировать max наименьшим числом которое int может принимать: max = INT_MIN;
, но для этого нужно будет подключить дополнительный заголовочный файл в начале программы #include <limits.h>
В вашем решение самая главная ошибка в том, что а
может иметь нулевое значение(ничего не записано в этом участке памяти), тогда код просто не выполнится, и все значения будут исходными. Кроме того нет проверки состояния потока ввода. И лучше использовать более быстрые операторы и давать объектам осмысленные имена. Ну, примерно так:
int number,
ecount = 0,
sum_of_odd = 0,
// пока не известно какие числа будут
max = std::numeric_limits<int>::min();
while (cin >> number && number) {
if (max < number)
max = number;
if (number & 1)
sum_of_odd += number;
else
++ecount;
}
cout << ecount << '\n' << sum_of_odd << '\n' << max;
#include <iostream>
using std::cin, std::cout;
int main()
{
int evenCount = 0, oddSum = 0, max = INT_MIN;
for(int n; cin >> n && n;)
{
if (n%2 == 0) ++evenCount;
else oddSum += n;
if (n > max) max = n;
}
cout << evenCount << "\n";
cout << oddSum << "\n";
cout << max << "\n";
}
придумал вот как и это работаетно видимо сокет ждет 30 секунд, а потом обрывает связь
Есть код для деления чисел на наибольший общий множитель:
Проблема заключается в том, что раньше я перегружал таким методом, а с шаблонными функциями это, как я понял, работает по-другомуПодскажите,...