Sprawic aby program sprawdzał czy wporwadzona liczba jest >0

0

Witam miałem napisać program który podaję największą liczbę, spośród wczytanych:

 const
	maxt=50;

type
	tab=array[1..maxt] of integer;

var
  n, i, max :integer;
	t : tab;

begin

    Write('Podaj ilosc liczb, ktora chcesz wczytac: ');
    Readln(n);
       for i:=1 to n do begin
                Write('Podaj wartosc liczby nr ',i,': ');
                Readln(t[i]);
                end;

  max:=t[1];
	for i:=2 to n do if t[i]>max then begin max:=t[i];
  end;

    writeln('Najwieksza wartosc wczytanej liczby to ',max);
    Readln;
end.

Problem mam niestety z tym, że jak program pyta ile liczb wprowadzić a ja wprowadzam np "-3" albo "0" to piszę, że że największa liczba to 0. Mam problem z wprowadzeniem tego do kodu(żeby program sprawdzał czy liczba która ma odpowiadać za ilość liczb do wczytania jest większa od 0) z góry dziękuję za pomoc!

0

Użyj typu bez znaku: Word, Cardinal

0

Hmm... nie wiele mi to podpowiada:)

0

O ile dobrze zrozumiałem problem to wystarczyło by się procedurą Val zabezpieczyć przed wprowadzaniem zera, liczb mniejszych od zera lub innych niedopuszczalnych przez kod wartości. I robić to w pętli repeat ... until. Próbowałem popatrzeć na kod, jest on wprawdzie krótki, ale znowu problem, że nawet jeśłi jest formatowanie to jest ono jakieś dziwne i utrurudniające czytanie kodu :/

0

Sformatuj porządnie kod. Np tak

const
  maxt=50;

type
  tab=array[1..maxt] of Integer;

var
  n,i,max:Integer;
  t:tab;

begin
  Write('Podaj ilosc liczb, ktora chcesz wczytac: ');
  repeat
    Readln(n);
  until n>0;
  if n>maxt then n:=maxt;

  for i:=1 to n do
  begin
    Write('Podaj wartosc liczby nr ',i,': ');
    Readln(t[i]);
  end;

  max:=t[1];
  for i:=2 to n do if t[i]>max then max:=t[i];

  Writeln('Najwieksza wartosc wczytanej liczby to ',max);
  Readln;
end.

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