Kezdőoldal » Számítástechnika » Programozás » Sk=1-1/2+1/3-1/4+. +-1/k...

Sk=1-1/2+1/3-1/4+. +-1/k eredménye, addig amíg |S2-S1|<E. E-t mi adjuk meg. Valaki le tudná írni ennek a programnak a forráskódját C#-ban?

Figyelt kérdés
addig jutottam el, hogy felveszek egy sz=1(számláló) és egy n=1(nevező) változót intbe és sz=sz*(-1), n=n+1, emellett szerintem kell egy s1 és egy s2, ahol s2=s1+ még egy tag. E-t szerintem doublebe kell. Valaki le tudná írni?

2014. okt. 22. 19:00
1 2 3
 1/24 anonim ***** válasza:
S1 és S2 konstans. Be is égethetnéd. Ciklus ezek alapján csak E bekérésére-vizsgálatára kell: amikor a kapott E <= |S1-S2|, akkor lép ki.
2014. okt. 22. 19:13
Hasznos számodra ez a válasz?
 2/24 A kérdező kommentje:
ezt értem, köszi, de nem tudom leprogramozni sajnos.
2014. okt. 22. 20:33
 3/24 anonim ***** válasza:

#1 vagyok, 2 gondolat


1. Sőt, |S1-S2| konkrétan 0.5, tehát 0.5<E a feltétel. Leprogramozásához pedig csak a ciklust és a bekérést kell ismerned, amit nyilván tanultatok, ha feladták a feladatot.


2. Biztos, hogy ez van a feladatszövegben? Mert szerintem totál értelmetlen a feladat így. Legalábbis az SK képlet totál felesleges, ha nem kell vele semmit sem kezdeni, révén, hogy S1 és S2 konstansok szerepelnek a feltételben.

2014. okt. 22. 21:17
Hasznos számodra ez a válasz?
 4/24 A kérdező kommentje:

"Készítsünk programot, mely az Sk=1 - 1/2 + 1/3 - 1/4 +...+ - 1/kösszeget számítja amíg |Sk-Sk-1|<E. Adott E.

ennyi a feladat szövege

2014. okt. 22. 21:43
 5/24 A kérdező kommentje:

double s1 = 1, s2 = 0, E;

double sz = 1, n = 1;

Console.Write("E: ");

string st;

st = Console.ReadLine();

E = Convert.ToDouble(st);


do

{


sz = sz * -1;

n = n +1;

s1 += sz / n;

}

while (s1 < E);

Console.Write("eredmény: ");

Console.WriteLine(s1);

Console.ReadKey();

2014. okt. 22. 21:51
 6/24 A kérdező kommentje:
itt akadtam el
2014. okt. 22. 21:51
 7/24 anonim ***** válasza:

Ami hiányzik:

- s2 frissítése, őt nevezted ki S(k-1)-nek ha jól gondolom. valahová kéne egy s2=s1 a cikluson belül

- és a ciklusfeltételben az abszolút különbség alkalmazása


Én amúgy beszédes változóneveket használnék:


SKm1=1

SK=1

előjel=1

k=1

ciklus

.. SKm1=SK

.. k++

.. előjel*=-1

.. SK=SKm1+előjel*(1/k)

amíg ( abs(SK-SKm1) < E )


Nem teszteltem az algoritmust, de így félkómásan negyed 1-kor jónak tűnik. :D

2014. okt. 23. 00:20
Hasznos számodra ez a válasz?
 8/24 SimkoL ***** válasza:

Írtam egy szösszenetet Pascal-ban: - direkt nem C# :)


program sorozat;

var E, s1, s2 : double;

i : integer;

begin

s1 := 1;

s2 := 0;

E := 0.12;

i := 1;

repeat

begin

Inc(i);

s2 := s1;

if i mod 2 = 0 then s1 := s1 + (- 1 / i) else s1 := s1 + (1 / i);

WriteLn('Sk',i-1, ': ', s2:5:5, ' ', 'Sk',i, ': ', s1:5:5, ' |Sk - Sk-1|: ', Abs(s2 - s1):5:5);

end;

until (Abs(s2 - s1) < E );

WriteLn('Sk: ', s1:5:5);

ReadLn;

end.


Szerintem megérthető.

2014. okt. 23. 00:23
Hasznos számodra ez a válasz?
 9/24 anonim ***** válasza:

Az abs(S1-S2) egyre kisebb lesz, így a kérdésben nem "amíg"-nak kéne szerepelni, hanem "mígnem"-nek.

Szóval ha egy while ciklust írsz, akkor:

while (abs(s1-s2)>E) feltétel lenne logikus.


SimkoL már "jó" választ írt (legalábbis a feltétel része, az Si számolgatás nekem elég gyanús), de ez igazából nem az, ami a kérdésben szerepel:) (mert a pascal "repeat-until" ciklus igazából "ismételd-mígnem" ciklus, az igaz feltételre lép ki)

2014. okt. 23. 09:20
Hasznos számodra ez a válasz?
 10/24 A kérdező kommentje:
Nem tudom megcsinalni. De köszönöm a segítséget mindenkinek. :)
2014. okt. 23. 10:51
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!