Ĺadny brzuch
Napisz program, który wyznacza sumę szeregu z zadaną dokładnością e=0.0001.
http://www.toya.net..../rownanie10.gif
program szereg; uses WinCrt; var n,s:integer; suma:real; begin n:=1; suma:=0; repeat [b]s:=1/n*(n+1); [/b] n:=(n+1); suma:=suma+s; until s<10000; writeln('Suma szeregu wynosi: ',suma:10:4); readln; end.
Czemu w zaznaczonej lini wywala mi błąd?
Co jest przyczyną i jak się pozbyć dziadostwa:)
Program wydaje, mi się że jest napisany poprawnie
cytat:Crisu napisał:
Czemu w zaznaczonej lini wywala mi błąd?
Masz tak : s:=1/n*(n+1);
Wcześniej zadeklarowałeś s jako Integer a w powyższej linijce wyraźnie widać, że wartość przypisywana do s nie jest typu całkowitego (masz tam dzielenie).
cytat:Co jest przyczyną i jak się pozbyć dziadostwa:)
Dla s zamiast Integer dać Real
cytat:Program wydaje, mi się że jest napisany poprawnie
Często tak się wydaje ;)
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
faktycznie:)
Ew wpadłem na pomysł, że zamiast zmieniec na real mozna dać
suma:=suma+[b]1[/b]s;
Teraz, jest tylko taka kwestia, że program w zaleznosci od zmiany daje dwa różne wyniki:|
suma:=suma+[b]1/[/b]s;
powinno byc:)
cytat:Crisu napisał:
Teraz, jest tylko taka kwestia, że program w zaleznosci od zmiany daje dwa różne wyniki:|
Wrzuć tu kod po swoich zmianach.
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
Hmm, od biedy zamień / na div
Strona mojej grupki programistycznej: www.blaze.er.pl
Zapraszam na moje forum - www.blaze-programming.no-ip.com/phpbb2
gg: 4644238 | tlen: chomik-programista
Ogłaszam że ruszam na krucjatę antypiracką! Precz z kursami drogiego softu w KĄE, piszcie coś o darmowym!
cytat:chomik napisał:
Hmm, od biedy zamień / na div
To by zupełnie wyłożyło program.
W tym miejscu nie może być div
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
program szereg; uses WinCrt; var n,s:integer; suma:real; begin n:=1; suma:=0; repeat s:=n*(n+1); n:=(n+1); suma:=suma+1/s; until s<1000; writeln('Suma szeregu wynosi: ',suma:10:4); readln; end.
cytat:Crisu napisał:
Teraz, jest tylko taka kwestia, że program w zaleznosci od zmiany daje dwa różne wyniki:|
s:=1/n*(n+1);
s:=1/(n*(n+1));
Te dwie linijki oznaczają co innego - dlatego masz różne wyniki.
Ta druga (czyli to co teraz masz tylko inaczej zapisane) jest poprawna.
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
http://www.toya.net..../rownanie10.gif
program szereg; uses WinCrt; var n,s:integer; suma:real; begin n:=1; suma:=0; repeat [b]s:=1/n*(n+1); [/b] n:=(n+1); suma:=suma+s; until s<10000; writeln('Suma szeregu wynosi: ',suma:10:4); readln; end.
Czemu w zaznaczonej lini wywala mi błąd?
Co jest przyczyną i jak się pozbyć dziadostwa:)
Program wydaje, mi się że jest napisany poprawnie
cytat:Crisu napisał:
Czemu w zaznaczonej lini wywala mi błąd?
Masz tak : s:=1/n*(n+1);
Wcześniej zadeklarowałeś s jako Integer a w powyższej linijce wyraźnie widać, że wartość przypisywana do s nie jest typu całkowitego (masz tam dzielenie).
cytat:Co jest przyczyną i jak się pozbyć dziadostwa:)
Dla s zamiast Integer dać Real
cytat:Program wydaje, mi się że jest napisany poprawnie
Często tak się wydaje ;)
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
faktycznie:)
Ew wpadłem na pomysł, że zamiast zmieniec na real mozna dać
suma:=suma+[b]1[/b]s;
Teraz, jest tylko taka kwestia, że program w zaleznosci od zmiany daje dwa różne wyniki:|
suma:=suma+[b]1/[/b]s;
powinno byc:)
cytat:Crisu napisał:
Teraz, jest tylko taka kwestia, że program w zaleznosci od zmiany daje dwa różne wyniki:|
Wrzuć tu kod po swoich zmianach.
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
Hmm, od biedy zamień / na div
Strona mojej grupki programistycznej: www.blaze.er.pl
Zapraszam na moje forum - www.blaze-programming.no-ip.com/phpbb2
gg: 4644238 | tlen: chomik-programista
Ogłaszam że ruszam na krucjatę antypiracką! Precz z kursami drogiego softu w KĄE, piszcie coś o darmowym!
cytat:chomik napisał:
Hmm, od biedy zamień / na div
To by zupełnie wyłożyło program.
W tym miejscu nie może być div
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
program szereg; uses WinCrt; var n,s:integer; suma:real; begin n:=1; suma:=0; repeat s:=n*(n+1); n:=(n+1); suma:=suma+1/s; until s<1000; writeln('Suma szeregu wynosi: ',suma:10:4); readln; end.
cytat:Crisu napisał:
Teraz, jest tylko taka kwestia, że program w zaleznosci od zmiany daje dwa różne wyniki:|
s:=1/n*(n+1);
s:=1/(n*(n+1));
Te dwie linijki oznaczają co innego - dlatego masz różne wyniki.
Ta druga (czyli to co teraz masz tylko inaczej zapisane) jest poprawna.
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486