Ovo uopste nije klasican zadatak za FOR petlju, vec za WHILE (ili repeat).
Sto se tice tezine zadatka, ne mogu se sloziti sa tobom da je ovo tezi tip "osnovnih" zadataka. Procitaj prvo pazljivo zadatak i razmisli o onome sta se trazi. Dat ti je interval (a, b), mada je logicnije da je zatvoren, na kome treba da trazis vrednosti neke funkcije. Ja cu posmatrati to kao zatvoren interval, posto je tako i radjen zadatak sudeci po tvom kodu. Dakle, prvo treba da ispises vrednost funkcije za
x = a. Zatim treba da uvecas
x za korak, to jest, za
h. Potom trazis vrednost funkcije za to novo
x koje je sad jednako
x = a + h. Zatim ponovo uvecavas
x za
h i trazis opet vrednost funkcije za
x = a + h + h = a + 2*h itd., sve dok vrednost u
x nije veca od
b (posto nam se traze samo vrednosti koje PRIPADAJU tom intervalu).
E ako si shvatio kako bi program trebao da radi, da krenemo na analizu tvog koda.
Prvo sto bode oci je nacin na koji smo dosli do
n (posto si rekao da ti to nije jasno evo objasnjenja: FOR petlja u tvom kodu ide od 0 do N sto znaci da je ukupan broj vrednosti koje treba da budu ispisane N+1; u prevodu, N nam sluzi da bi smo znali koliko puta treba da udjemo u petlju da bi ispisali sve trazene vrednosti funkcije iz datog intervala).
Zaokruzivanje broja nije dobro resenje zato sto se moze desiti da ispisemo vrednosti funkcije za neko
x koje uopste nije u zadatom intervalu. Na primer:
interval je [1, 3.8]
korak je npr. 1 //h:= 1
dobijamo za
n sledece:
n: = round((3.8 - 1) / 1) = round(2.8) = 3
sto znaci da cemo racunati vrednost funkcije
y=cos2x+arctgx za 4 broja (n+1 = 3 + 1 = 4) i to za:
x = 1;
x = 1 + h = 2;
x = 1 + 2*h = 3;
x = 1 + 3*h =
4; //a broj 4 ne pripada zadatom intervalu, zbog toga tebi ne treba zaokruzeno
n, vec ceo deo realnog izraza koji se nalazi u round
dakle, ne znam ko ti je resavao zadatak, ali ocigledno nije preterano razmisljao o istom.
Nadam se da si uspeo i da shvatis zasto je
x:=x0+i*h (prosto idemo od pocetne vrednosti i dodajemo
i puta korak
h da bi dobili
x za koje racunamo vrednost funkcije).
Ovaj zadatak si mogao bez da resis preko WHILE petlje uopste ne koristeci n:
Code:
x:= a;
while (x <= b) do
begin
y:=sqr(cos(x))+arctan(x);
//ovde dodas svoj kod za prikaz rezultata
x:= x + h;
end;
A za korak pri definisanju FOR petlje prvi put cujem. Koliko znam, on je uvek jedan (mada se kod nekih drugih jezika moze podesiti po zelji, npr u C#). Neka me neko ispravi ako gresim.
I zapamti, ne resavaj napamet, ove stvari su proste samo treba malo da razmislis o problemu zadatka.
Pozdrav