Max i Min z serii liczb, nie licząc ostatniej.

0

Mam takie zadanie: Napisz program, który pobiera serię liczb dotąd, aż użytkownik wpisze 0, następnie program wyświetli max i min liczbę z tej serii.

Problem tkwi w tym, że nie mogę użyć tablic i ma to być za pomocą pętli repeat. Zrobiłem tak:

var maks, minimum, liczba: integer;

begin
  maks := 0;
  minimum := 0;
  writeln('podaj serie liczb zakonczona zerem:');
  repeat
    readln(liczba);
    if liczba > maks then
      maks := liczba;
    if liczba < minimum then
      minimum := liczba;
  until liczba = 0;
  writeln('najwieksza liczba to: ', maks);
  writeln('najmniejsza liczba to: ', minimum);
  readln;
end.

Ale wtedy najmniejsza liczba to to 0, które podaję na zakończenie. A tego 0 ma nie brać po uwagę. Tego ostatniego oczywiście, bo gdzieś w środku może się przecież trafić 0. Pomożecie?

0

Jakim cudem może być 0 w środku?

0

zrob petle ktora wykonuje sie caly czas a na samym poczatku zrob sprawdzenie
jezeli liczba == 0 to wtedy break (instrukcja break wychodzi z petli)

0

Zrób nieskończoną pętlę i dodaj ręcznie ifa po tym readln w którym sprawdzisz warunek i wyjdziesz z pętli, gdy zostanie spełniony.

1

po pierwsze to masz źle zainicjowane zmienne

  maks := 0;
  minimum := 0

powinno być

  maks := Low(Integer);
  minimum := High(Integer)

a dlaczego tak to sam pomyśl. Po drugie zamień pętlę repeat na while dodając dodatkowy readln przed pętlą

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