Wątek przeniesiony 2017-10-30 15:44 z C# i .NET przez Ktos.

Program obliczający sumę szeregu – potrzebne wskazówki

0

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ć

1

Suma od k = 0 do k: (-n) * (-1)^n.

1

suma szeregu E(n) = n/2 :)

0
 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)

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).

0

Poprawione, teraz wyskakuje błąd przy
i <= ilosc

1
eucalyptus napisał(a):

Poprawione, teraz wyskakuje błąd przy
i <= ilosc

Do zmiennej ilosc nie przypisujesz żadnej wartości.

0
GN napisał(a):
eucalyptus napisał(a):

Poprawione, teraz wyskakuje błąd przy
i <= ilosc

Do zmiennej ilosc nie przypisujesz żadnej wartości.

a jaką wartość należy przypisać?

1

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ść.

1
Ktos napisał(a):

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ść.

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;
            }
1

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
0
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);
	}
}

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