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?
#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.
"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
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();
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
Í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ő.
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)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!