Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 15. 01. 2011 19:26

janca361
.
Příspěvky: 3284
 

Řada v Pascalu

Zdravím,
mám napsat program, který vypisuje řadu a na základě rozdílu předposledního a posledního člena v absolutní hodnotě ji ukončí. Řada je na obrazovku vypisována buď jako zlomky nebo jako reálná čísla.
Řada vypadá následovně:
$\frac {1}{1*2}+\frac {1}{2*3}+\frac {1}{3*4}+ ...$
a podmínka pro ukončení:
$|a_{n-1}-a_n|<\varepsilon$
$a_n$ je poslední člen řady a $a_{n-1}$ člen jemu předcházející.
Epsilon bude na začátku zadán z klávesnce.

Code:

program rada;
var epsilon:real;

begin
writeln('Zadej epsilon');
readln(epsilon);

Tady jsem skončila :(

Díky předem za pomoc.

Offline

  • (téma jako vyřešené označil(a) janca361)

#2 15. 01. 2011 20:23

Dioxid
Příspěvky: 416
Reputace:   13 
 

Re: Řada v Pascalu

Takže výstup bude vypadat třeba takto?:
1/2+1/6+1/12+1/20+... atd.
Nebo to má vypsat ten součet všech těch zlomků?


Jsem omylný, proto ne vše, co jsem napsal, je zaručeně správně.
468

Offline

 

#3 15. 01. 2011 20:25 — Editoval Lumikodlak (15. 01. 2011 20:28)

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Řada v Pascalu

Treba takhle nejak:

Code:

program rada;
var epsilon,cislo:real;
var n: integer;

begin
writeln('Zadej epsilon');
readln(epsilon);

write (0.5);
n:=2;
cislo:=1/n/(n+1);
while cislo >= epsilon do begin
  write ('+',cislo);
  inc(n);
  cislo:=1/n/(n+1);
end

end.

Ale s temi realnymi cisly to vypada trochu osklive, muzes tam nastavit formatovani treba takhle: write ('+',cislo:1:5);
nebo si to upravit na ty zlomky.
(omlouvam se, ze jsem sem dal ten prispevek po tom Tomovem, jeste jsem ho nevidel kdyz jsem to sem psal)

Offline

 

#4 15. 01. 2011 20:36

Dioxid
Příspěvky: 416
Reputace:   13 
 

Re: Řada v Pascalu

↑ Lumikodlak: Ne, že bych chtěl shazovat Tvé řešení, pokud se mýlím, tak se alespoň poučím. Neukončí se ten tvůj program právě tehdy když $a_n<\varepsilon $?
Vzhledem k:

Code:

while cislo >= epsilon do begin

A nemělo by tam být něco jako

Code:

while abs(a(n-1)-a(n))>=epsilon do begin

a(x) by byla funkce, která vrací 1/(x*(x+1))


Jsem omylný, proto ne vše, co jsem napsal, je zaručeně správně.
468

Offline

 

#5 15. 01. 2011 20:39 — Editoval Lumikodlak (15. 01. 2011 20:40)

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Řada v Pascalu

↑ TomDlask:
Ano, mas pravdu, uz jsem si vsimnul a zrovna jsem to prepisoval :-)
Jeste jednou se omlouvam, to co jsem psal predtim je spatne, melo by to vypadat spis priblizne takhle (za predpokladu ze se maji vypisovat cleny te rady, a ne jen ten soucet) :

Code:

program rada;
var epsilon,clen,minulyclen:real;
var n: integer;

begin
writeln('Zadej epsilon');
readln(epsilon);

n:=1;
clen:=1/n/(n+1);
write (clen);
inc(n);
minulyclen:=clen;
clen:=1/n/(n+1);
while minulyclen - clen >= epsilon do begin
  write ('+',clen);
  inc(n);
  minulyclen:=clen;
  clen:=1/n/(n+1);
end

end.

Offline

 

#6 15. 01. 2011 22:06

janca361
.
Příspěvky: 3284
 

Re: Řada v Pascalu

↑ Lumikodlak:
Můžu se zeptat?

inc(n)

Co je to za funci?

Offline

 

#7 15. 01. 2011 22:16

Dioxid
Příspěvky: 416
Reputace:   13 
 

Re: Řada v Pascalu

↑ janca361: Obecně to zvýší n o jednu hodnotu výš, v tomto případě to je to samé jako

Code:

n:=n+1;

Jsem omylný, proto ne vše, co jsem napsal, je zaručeně správně.
468

Offline

 

#8 15. 01. 2011 22:31

janca361
.
Příspěvky: 3284
 

Re: Řada v Pascalu

↑ TomDlask:
Díky moc, myslela jsem si to ;)

Další dotaz:

Code:

clen:=1/n/(n+1)

Nemělo by to být takto?

Code:

clen:=1/n*(n+1)

Offline

 

#9 15. 01. 2011 22:32 — Editoval TomDlask (15. 01. 2011 22:34)

Dioxid
Příspěvky: 416
Reputace:   13 
 

Re: Řada v Pascalu

↑ janca361:
Oboje je správně, stačí si uvědomit toto:
$\frac{1}{n(n+1)}=\frac{\frac{1}{n}}{n+1}$


Jsem omylný, proto ne vše, co jsem napsal, je zaručeně správně.
468

Offline

 

#10 15. 01. 2011 22:35

janca361
.
Příspěvky: 3284
 

Re: Řada v Pascalu

↑ TomDlask:
Tak to se Lumikodlakovi omlouvám.
Vycházela jsem z toho, že řada je: $\frac {1}{1*2}+\frac {1}{2*3}+\frac {1}{3*4}+ ...$
takže člen bude obecně takto:
$\frac {1}{n*(n+1)}$

Offline

 

#11 15. 01. 2011 22:40

Dioxid
Příspěvky: 416
Reputace:   13 
 

Re: Řada v Pascalu

↑ janca361: Ano, to je hodnota n-tého zlomku.


Jsem omylný, proto ne vše, co jsem napsal, je zaručeně správně.
468

Offline

 

#12 15. 01. 2011 23:49

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Řada v Pascalu

↑ janca361:
Jsem zvykly vyuzivat toho, ze prekladac vyhodnocuje nasobeni a deleni (a nektere jine operace) zleva doprava, tak jsem to napsal takhle neprehledne a nepremyslel jsem nad tim.


toto:

  clen:=1/n/(n+1)

se prelozi stejne jako:

  clen:=(1/n)/(n+1)

(to druhe je prehlednejsi, a je z toho lepe poznat ten vyraz, co psal Tom)
$\frac{\frac{1}{n}}{n+1}$


anebo muzes napsat (coz se prelozi jinak, ale to je jedno, tim se ted nezatezuj :-) )

  clen:=1/(n*(n+1))

a to vypada vic jako tohle:
$\frac {1}{n*(n+1)}$


kdyz napises

  clen:=1/n*(n+1)

tak prekladac to prelozi stejne jako: (protoze nasobeni a deleni maji stejnou prednost, tak se provede proste nejdriv to nalevo)

  clen:=(1/n)*(n+1)

coz by ale bylo tohle a to uz je matematicky jiny vyraz:
$\frac{1}{n}*(n+1)$

Kdyz si nejsi jista, jaky vyraz z toho prekladac udela, tak tam muzes dat zavorky.
(mozna vysvetluju neco co uz vis)

Offline

 

#13 16. 01. 2011 16:56

janca361
.
Příspěvky: 3284
 

Re: Řada v Pascalu

↑ Lumikodlak:

Jak je to s předností (pořadím) provádění operací vím ;) Nevěděla jsem vztah, který napsal TomDash ↑ tady:, tak jsem se zeptala :) Od toho přece forum je, ne?

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson