Arrays 帕斯卡数组

Arrays 帕斯卡数组,arrays,pascal,Arrays,Pascal,程序输入租用的设备数量和支付的成本。如果设备损坏,则需要额外费用。输入的数据应在屏幕上输出 当我为损坏设备输入2,它要求输入原始程序时,程序停止;然而,当我输入1时执行结果;但对于接受0的设备数量,当提示我再次输入返回的设备数量时,它接受另一个数字;我似乎不明白这个问题 这是我写的整个程序 Program Rental_info; CONST Flaterate= 100000; Penalty= 0.05; Var client_name, ID_numbe

程序输入租用的设备数量和支付的成本。如果设备损坏,则需要额外费用。输入的数据应在屏幕上输出

当我为损坏设备输入2,它要求输入原始程序时,程序停止;然而,当我输入1时执行结果;但对于接受0的设备数量,当提示我再次输入返回的设备数量时,它接受另一个数字;我似乎不明白这个问题

这是我写的整个程序

    Program Rental_info;

CONST
    Flaterate= 100000;
    Penalty= 0.05;

Var
    client_name, ID_number: array[1..1000] of string;
    Total_equiprented, equip_return,equipcondition: array [1..1000]of integer;
    Total_paid, Balance, Additional_cost, orig_cost:array[1..1000]of real;
    num_of_clients,option,x,y,G,s, B, A, Clientaddcost_count: integer;
    Total_amt_out,Total_amt_received,Total_add_cost:real;


   Begin
        num_of_clients:=0 ;
        x:=0;
        y:=0;
        s:=0;
        B:=0;
        A:=0;
        Total_amt_out:=0;
        Total_amt_received:=0;
        Total_add_cost:=0;
        For A:=1 to num_of_clients DO
            Begin
                    Total_equiprented[A]:=0;
                    Total_paid[A]:=0;
                    Balance[A]:=0;
                    Additional_cost[A]:=0;
                    Orig_cost[A]:=0;
             End;
option:=0;
while option<2 do
         begin
          Writeln('Do you wish to add a client?') ;
          Writeln('Enter 1 for yes and 2 for no');
          Readln(option);
          IF (option = 1) THEN
            Begin
               Writeln('****WELCOME TO SSC Agricultural Rental Enterprise Records****');
               Writeln('Please enter the total number of rental clients') ;
               Readln(num_of_clients) ;
                // For s:=1 to num_of_clients DO  writeln(s);

               For x:=1 to num_of_clients DO
                  Begin
                    Writeln('Please enter rental client name: ') ;
                    Readln(client_name[x]);
                    Writeln('Please enter client ID number: ');
                    Readln(ID_number[x]);
                    Writeln('Please enter the amount of equipment rented: ');
                    Readln(Total_equiprented[x]);                                      
                    While Total_equiprented[x]>5 Do
   begin
                            Writeln('Please enter a smaller amount of equipment rented, amount should be <5!');
                                Readln(Total_equiprented[x]);
                           End; 

                             Writeln('Please enter amount paid for rented equipment: ');
                             Readln(Total_paid[x]); 
                    end;        

            For y:=1 to num_of_clients DO
                    Begin
                         Balance[y]:= Flaterate-Total_paid[y]

                    End;
                 For s:=1 to num_of_clients DO 
                    Begin
                        Writeln('Please select overall condition of equipment: ');
                         Writeln('1-Good');
                           Writeln('2-Damage') ;
                        //Writeln('Type overall condition of the equipment');
                        Readln(equipcondition[s]);

                        Writeln('Please enter amount of equipment returned');
                        Readln(equip_return[s]);

                        If (equipcondition[s]=1) AND (equip_return[s]=Total_equiprented[s]) then
                           Begin
                                 Additional_cost[s]:=0;

                           End
                           else if (equipcondition[s]=2) AND (equip_return[s]=Total_equiprented[s]) then
                           Begin

                                 Writeln('Please enter the original cost for equipment');
                                 Readln(orig_cost[s]);
                                 //Writeln(orig_cost[s]);
                                 Additional_cost[s]:= orig_cost[s]*Penalty;
                           End;
                     End;
                   For B:=1 to num_of_clients DO
                      Begin
                           Total_amt_out:= Total_amt_out + Balance[B];
                           Total_amt_received:= Total_amt_received + Total_paid[B];
                           Total_add_cost:= Total_add_cost + Additional_cost[B];
                           While Total_add_cost>0 Do
                             Begin
                              Clientaddcost_count:= Clientaddcost_count + 1;
                            End;
                       End;
   For G:=1 to num_of_clients DO
      Begin

                             Writeln('The client(s) with oustanding balances is/are ', client_name[B]);
                           Writeln('The total number of client(s) who are required to pay additional charges is/are ', Clientaddcost_count);
                           Writeln('The total payment received for rental equipment is ', Total_amt_received:0:2);
                             Writeln('The total payment outstanding for rental equipment is ', Total_amt_out:0:2);
                             Writeln('Client total additional amount to be collected for damaged equipment is ', Total_add_cost:0:2);

       end;  

   end 
   else
   Begin
         Writeln ('****Thank you for contacting SSC AGRICULTURAL RENTAl ENTERPRISE, GOODBYE****');
         Writeln;
         Writeln;

         Writeln('Press <Enter> To Quit...');
         Readln;
   End;

 end;

End.
Program-Rental\u-info;
常数
扁平化率=100000;
罚款=0.05;
变量
客户端名称、ID号:字符串数组[1..1000];
总装备租用、装备返回、装备条件:整数数组[1..1000];
支付的总成本、余额、额外成本、原始成本:实际值的数组[1..1000];
客户端数量,选项,x,y,G,s,B,A,Clientaddcost计数:整数;
出总金额、收总金额、加总成本:实收;
开始
_客户端的数量:=0;
x:=0;
y:=0;
s:=0;
B:=0;
A:=0;
总金额:等于0;
收到的总金额:=0;
总成本加总成本:=0;
对于A:=1到多个客户端
开始
总_[A]:=0;
支付的总金额[A]:=0;
余额[A]:=0;
附加成本[A]:=0;
原始成本[A]:=0;
结束;
选项:=0;
而选项5可以
开始

Writeln('请输入较小的租用设备金额,金额应当
总成本
在此处非零时,您的程序以无限循环方式输入:

 While Total_add_cost>0 Do
      Begin
         Clientaddcost_count:= Clientaddcost_count + 1;
      End;
而且你不会在循环中改变
总成本
来阻止它


重新考虑这个逻辑。

你能帮助我在那里为计数器做些什么吗;因为当我输入1作为设备条件时,它可以正常工作;当我输入2时,这就是问题所在(
对于B:=1到客户数量…
)其中,对所有客户端的总计进行求和,其中一个总计为
ClientAddCost\u Count
。如果且仅当当前客户端具有额外成本(
additional\u cost[B]>0
)时,才希望增加该值。您不应使用
While
-循环,而应使用
If
语句检查
附加成本[B]
和增量(带1)“ClientAddCost”如果成本超过0,则计算。@TomBrunberg;非常感谢;我现在得到了它,但对于我输入租用物品数量的部分,它接受0,然后当它再次请求并输入另一个数字时,例如,它仍然接受它,即使它与第一个金额不匹配。我如何确保它匹配。@Sue Are y如果我建议将第二个条目与第一个条目进行比较,如果较大,则拒绝?如果必须精确匹配,则如果值不同,则拒绝。