1

我有一个 For 循环的问题。我需要它来计算随机数量的疯狂购物和数量,但按如下顺序显示它们。它还需要获取大量的狂欢并在之前显示。

目前它显示的总狂欢为 0,并且只显示 20 个非随机的狂欢。

您总共赢得了 3 次疯狂购物

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

在狂欢#2 中,您可能会花费 R341

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

总成本:= 0;

总和:= 0;

ListHead := 'Max per spree is R500.00 Max number of sprees 20';
lstNumber.Items.Add(ListHead);

  SpreeWon := 'You have won  ' + inttostr(Sum) + ' shopping sprees';
  lstNumber.Items.Add(SpreeWon);

for Count := 0 to 20 do
begin
    Sum := Random(Count);
    Prize := Random(500) + 1;
    ListItems := 'On spree # ' + inttostr(Sum) + ' you may spend R' + inttostr(Prize);
    lstNumber.Items.Add(ListItems);
    TotalCost := TotalCost + Prize;
end;
begin
    Cost := 'Total prize value : R' + inttostr(TotalCost);
    lstNumber.Items.Add(Cost);
end;
4

1 回答 1

2

您的代码没有按照您的要求执行。您正在显示 20 个狂欢,因为您对其进行硬编码以生成 20 个狂欢,而不是随机数量的狂欢。

尝试更多类似的东西:

ListHead := 'Max per spree is R500.00 Max number of sprees 20';
lstNumber.Items.Add(ListHead);

Count := Random(20) + 1;
TotalCost := 0;

SpreeWon := 'You have won  ' + IntToStr(Count) + ' shopping sprees';
lstNumber.Items.Add(SpreeWon);

for I := 1 to Count do
begin
  Prize := Random(500) + 1;
  TotalCost := TotalCost + Prize;
  ListItems := 'On spree # ' + IntToStr(I) + ' you may spend R' + IntToStr(Prize);
  lstNumber.Items.Add(ListItems);
end;

Cost := 'Total prize value : R' + IntToStr(TotalCost);
lstNumber.Items.Add(Cost);
于 2012-09-18T22:18:57.187 回答