Warunek dwóch kolejnych wyrazów

0

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ś?

2

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ść.

0

Co to znaczy, że dwa wyrazy będą mniejsze?

0

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

0
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ę.

0

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

3

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1