Итеративно вычислить сумму по формуле

#include <cstdio>
#include <clocale>
#include <cmath>
using namespace std;
int main()
{
    float N, s, a_i;
    int g;
    
    setlocale(LC_ALL, "Russian");
    g = 1;
    for (int counter = 1; counter <= N; counter++)
        {
        if (g % 2 = 0)
        {
            a_i = counter * 3;
        }
        else
        {
            a_i = counter * (counter - 2);
        }
        s += pow((ceil(a_i - g)));
        }
        g+=1
    printf("%f", s);
}

В чем ошибка? Задание


Ответы (2 шт):

Автор решения: Harry

Да проще написать заново, чем исправлять...

long long S(unsigned int N)
{
    int sum = 0;
    for(int i = 1; i <= N; ++i)
    {
        long long a = i*((i%2==0) ? 3 : i-2)-i;
        sum += a*a;
    }
    return sum;
}

Допускаю замену long long на double, но смысла не вижу :)

→ Ссылка
Автор решения: Danis
  1. = это присвоение, а == это сравнение поэтому место if (g % 2 = 0) надо писать if (g % 2 == 0)
  2. функция pow принимает два аргумента - число, степень, а вы передаёт ей одно число. чтобы возвести в квадрат надо писать так pow(ceil(a_i - g), 2)
  3. g += 1 вы забыли ;, и его можно записать как g++;
  4. N у вас равен 0 поэтому цикл сразу заканчивается
→ Ссылка