[C] Proste zadanie pętla/parzyste - jak dobrze utworzyć ? Czy poprzestawiać ?/ Krzeczkowski

0

Napisz program, który wczytuje ze standardowego wejścia liczbę całkowitą n (n > 2) i wypisuje na standardowym wyjściu iloczyn liczb parzystych z zakresu od 2 do n (czyli 2∗4∗...∗n dla n parzystych i 2∗4∗...∗(n−1) w przeciwnym wypadku).


// Przy próbie 5 wychodzi 24. Gdzie mam błąd myślenia ? 
{
    int n, i, parzysta;
    scanf("%d", &n);
    if(n<2)
{
        printf("Za mała liczba");
}
    else
{
        for(i=2; i<=n ; i++)
{
        parzysta=(i % 2 == 0);
        if(parzysta)
{
            printf("%d", i);
}
}
}
    return 0;
}



0

Masz napisane że n musi być > 2 a twój program akceptuje n = 2.

Gdy n jest parzyste warunek powinien być w for powinien być i <= n, a gdy nie parzyste to i <= n-1.

Dodatkowo nigdzie nie widać liczenia iloczynu, tylko wypisujesz poszczególne liczby parzyste.

I na sam koniec - ten kod masz tak sformatowany czy tylko tutaj został tak skopiowany?

0

A nie prościej w forze zamiast i++ dać i = i + 2? Wtedy i zawsze będzie parzyste, a sprawdzanie tego zbędne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1