2012-09-18 196 views
1

我有一个For循环的问题。我需要它来计算随机数量的购物热潮和金额,但按照下面的顺序显示它们。它也需要采取sprees的数量并且显示它之前。德尔福2010年循环计数

目前它显示的总数为0,只显示20个非随机的sprees。

你已经赢得了总共3个疯狂购物

在狂欢#1,你可能会花R100

在狂欢#2你可以花R341

在狂欢#3你可能会花R451

TotalCost:= 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; 
+0

@Ken这就是为什么我张贴的链接:它告诉你与标签没有标注你的问题,但在这个问题提多少你想要的答案揭示。也许我应该说得更清楚(: –

回答

2

您的代码没有按照您的要求进行操作。你正在显示20个sprees,因为你对它编写了20个sprees,而不是随机的sprees。

尝试一些更喜欢这个:

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); 
+0

谢谢雷米。你的改变解决了问题。 – user1291092