[Pascal] Maksymalna różnica

Witam!

Od niedawna zacząłem robić zadania z main’a, do tej pory bez większego problemu szły wszystkie, lecz w tym zadaniu pokazuje mi 23/100 punktów (lub nawet 11, czy 12, ale zawsze te same testy są źle).

To jest to zadanie: http://main.edu.pl/user.phtml?op=showtask&task=abs&con=PAS.

Mój kod wygląda tak:

Program Maks_roznica;


var

  n, i, min, max, a : integer;


begin


  read(n, max); { wprowadza ilość elementów ciągu i pierwszy element }

  min := max; { pierwszy element to zarówno max jak i min }

  for i := 2 to n do { zaczynam od drugiego elementu, bo pierwszy został wprowadzony wcześniej }

  begin

    readln(a);

      if a > max then { jeżeli element większy od największego }

        max := a else { to teraz on jest największy, w przeciwnym przypadku }

          if a < min then { analogicznie, tyle że w drugą stronę }

            min := a else

  end;


  write(max-min); { pisz różnicę }


end.

Niby bardzo proste (bo umiem więcej Pascala - teraz chcę trochę poćwiczyć i robię zadania od najprostszych) zadanie, wklepuję liczby i pokazuje maksymalną różnicę, ale jednak coś jest źle i to nawet bardzo, skoro taki kiepski wynik.

Z góry dziękuję za pomoc.

Problem tkwi w instrucji readln(a), przeczytaj jeszcze raz jak wyglądają dane wejściowe. Dla przykładowego wejścia program zatrzymuje się w oczekiwaniu na dane wejściowe. Ten else przed end; to nie jest tam potrzebny, choć w niczym nie przeszkadza.

Nie zrozumiałeś treści zadania. Masz wczytać n liczb i wyliczyć maksymalną różnicę pomiędzy dwoma wyrazami ciągu. Dla danych wejściowych:

4

1 2 7 -6

poprawną odpowiedzią jest: 13 bo 7-(-6)=13

Licz kolejne różnice wyrazów ciągu w pętli, przy czym zawsze zapamiętuj największą i potem ją wyświetl.

Nie widzę, żeby w treści zadania było podane, że różnica ma być liczona między kolejnymi wyrazami ciągu. Ma znaleźć maksymalną różnicę między dowolnymi wyrazami ciągu.

czyli np. 7-(-6) daje 13, ale już -6-7 daje -13.

Przynajmniej tak mi się wydaje. Podane jest tylko a_i - a_j, gdzie 1 <= i,j <= n.

Faktycznie, warunek a_i - a_j, gdzie 1 <= i,j <= n wyjaśnia wszystko :wink:

Dziękuję wszystkim za zaangażowanie, ale zadanie dobrze zrozumiałem - milo miał rację błąd był w instrukcji readln, usunąłem jeszcze else (chociaż nie wiem czy to było konieczne) i jest 100.

Nie spodziewałem się, że ta jedna instrukcja, która tak mało zmienia w stosunku do drugiej (readln, a read) może rozwalić całe zadanie. :smiley: