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).
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.
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 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.
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.