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

Odpowiedz Nowy wątek
2006-10-19 19:18

Rejestracja: 14 lat temu

Ostatnio: 13 lat temu

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

Pozostało 580 znaków

2006-10-19 20:07

Rejestracja: 13 lat temu

Ostatnio: 6 lat temu

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.


<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

Odpowiedz

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