Napisz program obliczający sumę szeregu W(n)=1 – 2 + 3 – 4 + ...± n, gdzie n jest dowolną liczbą naturalną, którą program ma wczytać.
jak to ruszyć, proszę chociaż o jakieś wskazówki, bo kompletnie nie mam pojęcia jak to zrobić
Suma od k = 0 do k: (-n) * (-1)^n
.
suma szeregu E(n) = n/2 :)
int ilosc,n, suma=0;
Console.WriteLine("Podaj liczbę");
n = int.Parse(Console.ReadLine());
for (int i = 1; i <= ilosc; n++)
{
if (i % 2)
suma += i;
else
suma -= i;
}
Console.WriteLine(suma);
Console.ReadKey();
wymyśliłam coś takiego, jednak wyskakuje błąd przy if (i % 2)
To C#, nie C. Wynik i % 2
to liczba, a nie coś, co można potraktować jakby było prawdą lub fałszem. Zmień na if (i % 2 == 0)
.
Poprawione, teraz wyskakuje błąd przy
i <= ilosc
eucalyptus napisał(a):
Poprawione, teraz wyskakuje błąd przy
i <= ilosc
Do zmiennej ilosc nie przypisujesz żadnej wartości.
GN napisał(a):
eucalyptus napisał(a):
Poprawione, teraz wyskakuje błąd przy
i <= iloscDo zmiennej ilosc nie przypisujesz żadnej wartości.
a jaką wartość należy przypisać?
for (int i = 1; i <= ilosc; n++)
Zmień sobie ilosc
na n
, bo to przecież to samo w twoim programie (no i n
wczytujesz).
I w tej linijce zmień sobie też n++
na i++
, bo program będzie działał w nieskończoność.
Ktos napisał(a):
for (int i = 1; i <= ilosc; n++)
Zmień sobie
ilosc
nan
, bo to przecież to samo w twoim programie (no in
wczytujesz).
I w tej linijce zmień sobie teżn++
nai++
, bo program będzie działał w nieskończoność.
Dokładnie tak, do tego bym dodał abyś minimalnie zmienił warunki:
for (int i = 1; i <= n; i++)
{
if (i % 2 == 0)
suma -= i;
else
suma += i;
}
To powyżej działa, ale można prościej, bez modulo:
def series(k):
s = 0
for i in range(1, k + 1): # iteruj od i = 1 do k
s += -i * (-1) ** i # ** = potęgowanie
return s
using System;
public class Test
{
public static void Main()
{
// n%2 == 0
// 1 - 2 + 3 - 4 + 5 - 6 + 7 - 8 ... n
// [ -1 ] + [ -1 ] + [ -1 ] + [ -1 ] ... n/2
//n%2 == 1
// 1 - 2 + 3 - 4 + 5
// [ -1 ] + [ -1 ] + 5
// (-1*(n/2)) + n
int n = 123;
int suma = 0;
if(n % 2 == 0)
{
suma = -n/2;
}
else suma = (int)(-n/2) + (n);
Console.WriteLine(suma);
}
}