Tak jak w temacie, do napisania programu potrzebuję napisać warunek w pętli repeat/until gdy dwa kolejne wyrazy będą mniejsze od pewnej danej wczytanej w programie głównym, nie wiem jak sobie z tym poradzić, jak coś w programie nie będzie tablicy. Pomoże ktoś?
Do zapamiętania dwóch danych nie potrzebujesz tablicy. Wystarczą tobie dwie zmienne. Nazwijmy je val1
i val2
. Wczytujesz zawsze do val1
, ale zanim to zrobisz przypisujesz val2 := val1
. W takim układzie masz zawsze ostatnio i przedostatnio wprowadzoną wartość. Musisz jeszcze zadbać o to, żeby rozpoznać sytuację gdy masz wprowadzoną dopiero jedną wartość.
Co to znaczy, że dwa wyrazy będą mniejsze?
o właśnie, nie napisałem czegoś ważnego, że różnica tych dwóch wyrazów ma być mniejsza od "jakieś" danej wczytanej
gregory888john napisał(a):
różnica tych dwóch wyrazów
Mógłbyś podać przykład bo tego nie kminie:D
Może zamiast słowa ' wyrazów' chodziło Ci o 'wartości'. Nawet podobne ale robi dużą różnicę.
mam napisać program zawierający funkcje obliczającą sumę wyrazów szerego o elemencie okreslonym wzorem
a 1 = 1/(i-1)*(i+1) ; i = 2,3,...
obliczanie należy zakonczyć w chwili gdy różnica dwu kolejnych wyrazów będzie mniejsza od Eps. Wartość Eps należy wczytywać w programie głównym.
__
a więc muszę użyć tu pętli repeat
Z tego co wyczytałem w google, przy until podajemy warunek kiedy pętla ma się zakończyć, jakoś mi to nie wychodzi
Napisałem ci gotowy program, który wczytuje kolejne liczby z konsoli i zatrzymuje się gdy różnica będzie mniejsza od MaxDifference
function Difference(Value1, Value2: integer): integer;
begin
if Value1 > Value2 then
Result := Abs(Value1-Value2)
else
Result := Abs(Value2-Value1)
end;
var
MaxDifference: integer;
NewValue, OldValue: integer;
begin
Write('Max difference: ');
Read(MaxDifference);
Write('Value: ');
ReadLn(NewValue);
repeat
OldValue := NewValue;
Write('Next value: ');
ReadLn(NewValue);
until (MaxDifference > Difference(OldValue, NewValue));
WriteLn('Roznica pomiedzy ', OldValue, ' i ', NewValue, ' jest mniejsza od ', MaxDifference);
ReadLn;
end.
Musisz go sobie przerobić tak, żeby działał na liczbach rzeczywistych i zamiast wczytywania z konsoli robił obliczenia.