[C] Obliczanie sumy szeregu.

Michal99
Użytkownik
Użytkownik
Posty: 95
Rejestracja: 12 wrz 2010, o 17:27
Płeć: Mężczyzna
Podziękował: 49 razy

[C] Obliczanie sumy szeregu.

Post autor: Michal99 »

Witam. Mam problem z napisanie programu, który wczytuje liczby całkowite tak długo, dopóki tworzą one ciąg rosnący, a następnie policzenie sumy liczb tworzących ten ciąg.

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	int a, b, suma=0;
	scanf("%d", &a);
	while(a)
	{
		scanf("%d", &b);
		if(b<=a) 
			break;
		else
		{
			a=b;
			suma=suma+b;
		}
	}
	printf("Suma ciagu wynosi %d
", suma);

	system("PAUSE");
	return 0;

}
Przy podawaniu liczb np. -1, 1, 2, 3, 1 pokazuje mi, że suma wynosi 6. Co powinienem zmienić?
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Obliczanie sumy szeregu.

Post autor: kalwi »

dodać jedną linijkę po

Kod: Zaznacz cały

   scanf("%d", &a);
w 6 linijce. zapomniałeś tu o czymś.
luka52
Użytkownik
Użytkownik
Posty: 8601
Rejestracja: 1 maja 2006, o 20:54
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 47 razy
Pomógł: 1816 razy

[C] Obliczanie sumy szeregu.

Post autor: luka52 »

1. Jak podasz na początku 0, to program zakończy działanie - nie powinno tak być.
2. Pierwsza wczytana liczba nie jest dodawana do sumy.
Michal99
Użytkownik
Użytkownik
Posty: 95
Rejestracja: 12 wrz 2010, o 17:27
Płeć: Mężczyzna
Podziękował: 49 razy

[C] Obliczanie sumy szeregu.

Post autor: Michal99 »

Poprawiłem w pętli while z (a) na (1) i przy wpisywaniu 0 nie kończy programu, lecz nie mam pojęcia jak zrobić, aby dodawało do sumy pierwszą wpisaną liczbę.
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Obliczanie sumy szeregu.

Post autor: kalwi »

Kod: Zaznacz cały

suma=suma+a
warunek while (1) jest zawsze spełniony, więc ta pętla nie ma końca.
Michal99
Użytkownik
Użytkownik
Posty: 95
Rejestracja: 12 wrz 2010, o 17:27
Płeć: Mężczyzna
Podziękował: 49 razy

[C] Obliczanie sumy szeregu.

Post autor: Michal99 »

Dzięki za pomoc. Mam jeszcze pytanie co do jednego zadania. Mam policzyć sumę takiego ciągu:

\(\displaystyle{ a_{n}= \frac{\left| 1,25 \cdot (n+2)\right| }{ n^{2} }}\) dla \(\displaystyle{ n>0}\)

do momentu, aż wartość kolejnego wyrazu jest mniejsza od \(\displaystyle{ 10^{-2}}\)
Otrzymałem wynik równy 8.09886. Mógłby ktoś sprawdzić, czy jest poprawny?
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Obliczanie sumy szeregu.

Post autor: kalwi »

źle. Wygląda na to, że dałeś warunek while(wynik > 0.1), a powinno być 0.01

Kod: Zaznacz cały

int main()
{
	int i = 1;
	float suma = 0;
	while (((1.25*(i + 2)) / (i*i)) > 0.01)
	{
		suma += ((1.25*(i + 2)) / (i*i));
		i++;
	}
	printf("%.2f", suma);
	getchar();
	return 0;
}
wyszło tu 10.86
ODPOWIEDZ