C/C++

С++. Помогите с задачей по программированию.

НАЙТИ СУММУ ЧЁТНЫХ И ПРОИЗВЕДЕНИЕ НЕЧЁТНЫХ ЧИСЕЛ ОТ 1 ДО n, ИСПОЛЬЗУЯ ЦИКЛ С ПРЕДУСЛОВИЕМ. Неправильно находит произведение, в чём проблема?
Можно оч хитро решить. И также прочитай про переполнение типов
 #include  
using namespace std;
int main()
{
int n;
int s = 0;
int i = 1;
unsigned long long p = 1;
cin >> n;

while (i < n) {
p *= i++;
s += i++;
}

cout
КН
Кот..и Никаких Хлопот
3 427
Лучший ответ
Владимир Мирошкин Только не факт, что n - чётное.
 #include   
#include
#include
using namespace std;
int main() {
cout > n;
vector box(n);
iota(box.begin(), box.end(), 1);
auto is_odd = [](double s, int x) { return x % 2 != 0 ? s * x : s; };
auto is_even = [](double s, int x) { return x % 2 != 0 ? s : s + x; };
auto sum = accumulate(box.begin(), box.end(), 0.0, is_even);
cout
i++ в одном цикле, потом i++ в другом цикле. Если было 1, то для другого станет 2.
Возможно в этом. А вообще цикл надо делать не так, а просто начали 1, то следущее i+=2 и будет 3, так и для четного. Ушел спать...а ты оставь на утро, да на свежую голову делай.
Руслан Ямбаев
Руслан Ямбаев
93 197
Точно по заданию со стандартными типами:
 #include  
using namespace std;
int main()
{
unsigned i = 0, n, s = 0;
unsigned long long p = 1;
cout > n; while (i < n)
{ ++i; if (i & 1) p *= i; else s += i; }
cout