22. marts 2005 - 19:14Der er
3 kommentarer og 1 løsning
finde en bestemt sum i array
Jeg har et Array med tallene: 9,8,6,1,1,2,1,6,13
tag det første tal og undersøg om det er mindre end 20 tag det næste tal og læg det til det første tal, undersøg om det er mindre end 20 hvis det er større end 20 gå da videre til næste tal osv. hvis tallet 20 nåes eller hvis der ikke er flere tal i Array, bliver dette til RES1.
Start forfra, men ikke med de tal der er blevet brugt til RES1.
Hvordan finder jeg frem til dette resultat RES1 := (9,8,1,1,1)=20 RES2 := (6,2,6)=14 RES3 := (13)=13
procedure BeregnRES(Tal : array of integer; var RES : TRES); var TalLeft : integer;
function GetRES : integer; var i,x : integer; begin x:=0; for i:=0 to length(Tal)-1 do begin if (x+Tal[i]<=20) and (Tal[i]>0) then begin x:=x+Tal[i]; Tal[i]:=0; Dec(TalLeft); end; if x=20 then break; end; Result:=x; end;
begin TalLeft:=Length(Tal); while TalLeft>0 do begin SetLength(RES,Length(RES)+1); RES[Length(RES)-1]:=GetRES; end; end;
//------------------------
procedure TForm1.Button1Click(Sender: TObject); const Tal : array(.0..8.) of integer = (9,8,6,1,1,2,1,6,13); var RES : TRES; i : integer; begin BeregnRES(Tal,RES); for i:=0 to length(RES)-1 do Showmessage('RES'+inttostr(i+1)+'='+IntToStr(RES[i])); end;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.