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

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

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

EU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
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ć

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
1

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

  • Rejestracja: dni
  • Ostatnio: dni
1

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

EU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
0
Kopiuj
 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)

Ktos
  • Rejestracja: dni
  • Ostatnio: dni
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).

EU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
0

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

GN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 274
1
eucalyptus napisał(a):

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

Do zmiennej ilosc nie przypisujesz żadnej wartości.

EU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
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ć?

Ktos
  • Rejestracja: dni
  • Ostatnio: dni
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ść.

GN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 274
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:

Kopiuj
            for (int i = 1; i <= n; i++)
            {
                if (i % 2 == 0)
                    suma -= i;
                else
                    suma += i;
            }
lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
1

To powyżej działa, ale można prościej, bez modulo:

Kopiuj
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
NeuroXiq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Racibórz
  • Postów: 101
0
Kopiuj
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);
	}
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.