0

我有一个 While 循环的问题。

我需要将 TotalCost 显示在 SpreeWin 中,并且 Shopping sprees 显示如下

您赢得的消费限额是 R 890

在第 1 号大礼包中,您可能会花费 R100

在大礼包 #2 中,您可能会花费 R340

在第 3 号大礼包中,您可能会花费 R450

  ListHead := 'Max per spree is R500.00 Max limit is R10000.00';
  lstLimit.Items.Add(ListHead);

  Count := random(20) + 1;
  MaxCost := random(10000) + 1;
  TotalCost := 0;


  SpreeWon := 'Your spending limit that you have won is  R' + IntToStr(TotalCost);
  lstLimit.Items.Add(SpreeWon);


  while TotalCost <= MaxCost do
    begin
         Prize := Random(500) + 1;
         TotalCost := TotalCost + Prize;
         ListItems := 'On spree # ' + IntToStr(Count) + ' you may spend R' + IntToStr(Prize);
         lstLimit.Items.Add(ListItems);
    end;

 Cost := 'Total prize value : R' + IntToStr(TotalCost);
 lstLimit.Items.Add(Cost);
4

1 回答 1

4

您在 TotalCost 为 0 时为总成本添加项目,当您得到它时插入它。对于狂欢计数,你应该算一下:

  var
    SpreeCount: Integer;
    ..


  ..
  TotalCost := 0;

  // comment the below
  // SpreeWon := 'Your spending limit that you have won is  R' + IntToStr(TotalCost);
  // lstLimit.Items.Add(SpreeWon);

  SpreeCount := 0; // <--

  while TotalCost <= MaxCost do
    begin
         Prize := Random(500) + 1;
         TotalCost := TotalCost + Prize;

         Inc(SpreeCount); // <--
         // substitute SpreeCount for Count in the below
         ListItems := 'On spree # ' + IntToStr(SpreeCount) + ' you may spend R' + IntToStr(Prize);
         lstLimit.Items.Add(ListItems);
    end;

 Cost := 'Total prize value : R' + IntToStr(TotalCost);
 lstLimit.Items.Add(Cost); 

  // insert SpreeWon
  SpreeWon := 'Your spending limit that you have won is  R' + IntToStr(TotalCost); // <--
  lstLimit.Items.Insert(0, SpreeWon); // <--
于 2012-09-19T16:56:37.620 回答