Algorytm max, min - głębsze założenia.

0

Uproszczona treść zadania:
Rzucamy kostką do gry ustaloną przez nas ilość razy (wyniki zapisujemy po kolei w tablicy dynamicznej). Następnie rejestrujemy ile razy każde oczko wypadło. Wyznacz które oczko wypadło najwięcej razy (i podaj ile razy wypadło) i które oczko wypadło najmniej razy (i podaj ile razy wypadło).

Moja składnia programu licząca max i min i oczkomax i oczkomin wygląda w uproszczeniu tak:

procedure TForm1.Button3Click(Sender: TObject);
begin
memo2.lines.Clear;
max:=tabkostka[0];
oczkomax:=1;
for n:=1 to 5 do
begin
if max < tabkostka[n] then
begin
max:=tabkostka[n];
oczkomax:=n+1;
end;
end;
memo2.lines.add('[Liczba wypadnięc: które oczko]');
memo2.Lines.add(inttostr(max) + ': ' + inttostr(oczkomax) );
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
memo2.lines.Clear;
min:=tabkostka[0];
oczkomin:=1;
for n:=1 to 5 do
begin
if min > tabkostka[n] then
begin
min:=tabkostka[n];
oczkomin:=n+1;
end;
end;
memo2.lines.add('[Liczba wypadnięc: które oczko]');
memo2.Lines.add(inttostr(min) + ': ' + inttostr(oczkomin) );
end;

Dla dogodnych warunków jakimi są: tylko jedno oczko wypadło najwięcej razy oraz tylko jedno oczko wypadło najmniej razy, mój program chodzi bez żadnych problemów. Jednak gdy na przykład jedynka i szóstka wypadły najwięcej razy to mój program nie wywala oczekiwanych wyników. To samo jeśli chodzi o minimum - gdy mamy dwie skrajne minima to program da wynik jako tylko jedno oczko.

Bardzo proszę Was o rozwiązanie mojego problemu i dziękuje z góry za odpowiedź.

0

Program sypie się w momencie gdy mamy np. dwa maksima i dwa minima. Rozwiązanie jest proste. Masz sześć typów wyników (1-6). W tablicy dynamicznej zapisujesz wyniki rzutów kostką. Stwórz tablicę

TablicaWynikow :array[1..6] of Integer;

W pętli for oblicz liczbę wystąpień każdego wyniku

for i :=1 to 6 do
 for j := 0 to IlesElementow do
  if TablicaRzutow[j] = i then Inc(TablicaWynikow[i], 1);

Nastepnie posortuj bąbelkowo TablicaWynikow i wyświetl wszytkie elementy, które odpowiadają wartością skrajnym.

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