Optymalizacja kodu

0

Witam forumowiczów. Nie wiem czy wybrałem odpowiedni dział, ale niech będzie. Jak najlepiej pisać kod (mniej obciążająć RAM i CPU) sumy 4 liczb. Tak:

var
  a,b : integer;
begin
  a := StrToInt(edit1.text);
  b := StrToInt(edit2.text);
  if a<b then a := b;
  b := StrToInt(edit3.text);
  if a<b then a := b;
  b := StrToInt(edit4.Text);
  if a<b then a := b;
  Memo1.Lines.Add('Największa liczba to '+IntToStr(a)+'.');
end;

czy poprzez 4 zmienne i pętlę FOR. Nie chodzi mi o to, żeby ten program szybciej działał :-D bo róźnica by pewnie wynosiła tysięczną część nanosekundy :-D . Chcę to wiedzieć na przyszłość.</delphi></b>

0

a gdzie tu suma 4 liczb?

0

qrde pomylilem sie :D:D:D:D:D:D mialem na mysli wybór największej liczby

0

IMHO nie da się optymalniej...tak czy tak będzie trzeba przejść po wszystkich liczbach i porównać...

0

w tym przypadku używam tylko dwóch zmiennych, a gdybym miał pętlą jechać, 4 by były niezbędne. chyba... moze sie myle

0

Jak chcesz pętlą, możesz w tym stylu:

uses Math;
var
  m, i: integer;
begin
m:=StrToInt(Edit1.Text);
for i:=2 to 4 do
  m:=Max(m, StrToInt(TEdit(FindComponent('Edit'+IntToStr(i))).Text));
Memo1.Lines.Add(Format('Największa liczba to %d.', [m]);
end;
0

THX szczawiuk! dzięki za FindComponent do tej pory nie wiedziałem skąd wziąć taką procedurę.

0

Znajdowania liczby najwiekszej czy najmniejszej nie zoptymalizujesz, ale pomysl jak zoptymalizowac wyszukiwanie i jednej i drugiej w tej samej tablicy ;)

0

Tu mamy 4 liczby, przykład może trochę pechowy.
A gdyby liczb było 8 (nie przypadkiem wybrałem potęgę dwójki).
Ile jest potrzebnych porównań by znaleźć największą z 2^N liczb?
(2^N czyli 2 do potęgi N,
N 2^N
1 2
2 4
3 8
4 16 itd.)

0

Wolverine i mgr Dobrowolski: Nie rozumiem trochę was...można jaśniej??

0
mgr.Dobrowolski napisał(a)

Tu mamy 4 liczby, przykład może trochę pechowy.
A gdyby liczb było 8 (nie przypadkiem wybrałem potęgę dwójki).
Ile jest potrzebnych porównań by znaleźć największą z 2^N liczb?

2^N - 1

Szybciej niż liniowo się nie da - to jest trywialne ograniczenie dolne.

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