C++ Вопрос Не пойму, как сделать задание в лабке

already
Пользователь
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
373
Реакции[?]
42
Поинты[?]
0
Код:
#include <iostream>
using namespace std;

int main() {
    setlocale(LC_ALL, "Russian");
    float  sum = 0, pro = 1, ch{};
    int i, n, d;
    int a = static_cast<int>(ch);
    cin >> n;
    for (i = 1; i <= n; i++) {
        cin >> ch;
       // d = ch / 1;
        if (a % 2 == 0) {
            sum = sum + a;
            pro = pro * a;
        }
       
    }
    cout << "Сумма" << sum << endl << "Произведение" << pro;
    return 0;
}
Само задание:
Дано целое число N и набор из N вещественных чисел. Вывести сумму и произведение четных чисел из данного набора.

Задание вроде лёгкое, но программа не работает. Уже как только не извращался, выше последняя попытка что-то сделать (брал с гугла " int a = static_cast<int>(ch);", тк думал, что поможет), не помогло
 
Начинающий
Статус
Оффлайн
Регистрация
15 Авг 2021
Сообщения
15
Реакции[?]
4
Поинты[?]
1K
Вообще, четность - это свойство ЦЕЛОГО числа. (с) википедия
а по условию, целое число дано только одно. Даже если допустить, что четное число это вещественное число без дробной части и кратное двойке, кастовать здесь не требуется. преобразуйте число через float y=floor(x) и если y==x, то оно без дробной части. дальше просто преобразовываете в целое число int z=(int)x
и вычисляете остаток от деления на 2 - int r=z% 2; далее если если r==0, то r суммируете и умножаете с предыдущими четными числами.
 
money++
Разработчик
Статус
Оффлайн
Регистрация
14 Июн 2018
Сообщения
638
Реакции[?]
339
Поинты[?]
22K
У тебя еще, помимо коммента выше, есть в другом проблема - ты считываешь внутри цикла число в переменную ch, а работаешь дальше с переменной а, которая меняется только один раз (перед началом цикла)
 
already
Пользователь
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
373
Реакции[?]
42
Поинты[?]
0
Вообще, четность - это свойство ЦЕЛОГО числа. (с) википедия
а по условию, целое число дано только одно. Даже если допустить, что четное число это вещественное число без дробной части и кратное двойке, кастовать здесь не требуется. преобразуйте число через float y=floor(x) и если y==x, то оно без дробной части. дальше просто преобразовываете в целое число int z=(int)x
и вычисляете остаток от деления на 2 - int r=z% 2; далее если если r==0, то r суммируете и умножаете с предыдущими четными числами.
У тебя еще, помимо коммента выше, есть в другом проблема - ты считываешь внутри цикла число в переменную ch, а работаешь дальше с переменной а, которая меняется только один раз (перед началом цикла)
Спасибо за помощь!
Ответил поздно, тк забыл про тему:sweatsmile:
 
Сверху Снизу