wartości min max w tablicach dwuwymiarowych

0

wie ktos może jak znależć min max w tablicy dwuwymiarowej. dodatkowym utrudnieniem jest to iż tablica jest w części wypełniona zerami które chce pominąć.
</email>

0

Proponuję wziąć wymiary tablicy i zrobić pętlę:
wartosc_max=tablica[0,0];
wartosc_min=tablica[0,0];
for i:=0 to wymiar1-1 do
begin
for j:=0 to wymiar2-1 do
begin
if tablica[i,j]<>0 then
begin
if tablica[i,j]>wartosc_max then wartosc_max=tablica[i,j];
if tablica[i,j]<wartosc_min then wartosc_min=tablica[i,j];
end;
end;
end;
wyswietl(wartosc_max);
wyswietl(wartosc_min);

Jeśli chcesz zapamiętać pozycję tch wartości to jeszcze musisz dołożyć dodatkowe zmienne na zapamiętanie (np. maxx,maxy,minx, miny). I sprawdz czy nie zameinilem i z j miejscami - głupi błąd czasem się zdarza jak się pisze z palca
Andrzej Dąbrowski

0

Sposobów jest co nie miara. Poszukaj np. algorytmy sortowania i przerób któryś tak aby tylko wczytał wartości max i min do odpowiednich zmiennych. Ja postanowiłem dać swój kod bo tablica[0,0] może przecież zawierać to niechciane zero! :

max, min, i, j:integer
tablica: array[1..10, 1..10] of integer;

min:=0;
for i:=0 to 10 do
 begin
  for i:=0 to 10 do
   begin
    if tablica[i,j] <> 0 then
     begin
      if min = 0 then
       begin
        max:=tablica[i,j];
        min:=tablica[i,j];
       end;
      if tablica[i,j]<min then
       min:=tablica[i,j];
      if tablica[i,j]>max then
       max:=tablica[i,j];
     end;
   end;
 end;
0

Co do tego punktu startu zgadzam się absolutnie, chociaż sugerowąłbym nieco inne rozwiązanie - najpierw poszukanie jakiegoś nie zera, wstawienie jego wartości i dopiero start pętli. W przypadku dużych tablic zdecydowanei jest to optymalniejsze rozwiązanie.
Tutaj sęk w tym że wybór 0 na NULLa jest cokolwiek kotrowersyjny. Tak naprawdę powinien trzymać 3 wymiar tablicy i tam zaznaczać czy zero jest zerem czy nullem, albo po prostu zrobić to książkowo. Chodzi o to że stan=0 jest wykluczony a najczęściej może sie on pojawić i nie wiem czy świadomie został wybrany (w tablicy są numery rekordów z BD gdzie 0 zostało świadomei zarezerwowane) czy też przyjęto ze to roczny pomiar temperatury i zero na pewno będzie pomiędzy min a max - co może być założeniem błędnym. W takiej sytuacji wpisany pomiar =0 nie odróznia się od niewykonano pomiaru wpisujemy wartość neutralną 0. Jeśli np będzie ciepły roki temperatura najnizsza wyniesie 5 to nie mamy pewnosci czy przypadkiem nie byla najniższa 0 tylko pomineliśmy ten fragment, w drugą stronę działa tak samo.
Andrzej Dabrowski

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