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ć
Program obliczający sumę szeregu – potrzebne wskazówki
Wątek przeniesiony 2017-10-30 15:44 z C# i .NET przez Ktos.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 58
- Rejestracja: dni
- Ostatnio: dni
- Postów: 58
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)
- Rejestracja: dni
- Ostatnio: dni
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).
- Rejestracja: dni
- Ostatnio: dni
- Postów: 58
Poprawione, teraz wyskakuje błąd przy
i <= ilosc
- Rejestracja: dni
- Ostatnio: dni
- Postów: 274
eucalyptus napisał(a):
Poprawione, teraz wyskakuje błąd przy
i <= ilosc
Do zmiennej ilosc nie przypisujesz żadnej wartości.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 58
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ć?
- Rejestracja: dni
- Ostatnio: dni
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ść.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 274
Ktos napisał(a):
for (int i = 1; i <= ilosc; n++)
Zmień sobie
iloscnan, bo to przecież to samo w twoim programie (no inwczytujesz).
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;
}
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5046
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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Racibórz
- Postów: 101
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);
}
}