2016-01-26 35 views
-3

我得到這個錯誤:我發現了一個錯誤:非法表達

illegal expression and Fatal: Syntax error, ; expected but : found 

帕斯卡代碼如下:

Program PaidUp; 

const 
size=30; 

var 
    payment,totm1,totm2,totm3:real; 
    section1,section2,section3,i,j,idnum:integer; 
    IDNUMARR:array[1..999] of integer; 
    PAYMENTARR:array[1..size] of real; 


Procedure InitialiseVariables; 
{This procedure initialises all variables used in the program} 
    Begin 
     idnum:=0; 
     payment:=0; 
     totm1:=0; 
     totm2:=0; 
     totm3:=0; 
     section1:=0; 
     section2:=0; 
     section3:=0; 
     i:=0; 
     j:=0; 
End; {Initialise Variables} 

Procedure DeclareandInitialiseArrays; 
{This procedure declares and initialises all arrays used in the program} 
    Begin 
     IDNUMARR:array[1..999] of integer; 
     PAYMENTARR:array[1..size] of real; 
     For i:=1 to size do 
      begin 
       idnum[i]:=0; 
       payment[i]:=0; 
     end; {ends for statment} 
End; {Declare and Initialise Variables} 

Procedure PutDataIntoArray; 
{This procedure puts the data into the arrays} 
    Begin 
    while(idnum<>0 and payment<>0 and payment=1350 and payment=1620 and payment=1800 and payment=1650 and payment=1980 and payment=2200) do 
     begin 
       writeln('Invalid value, please enter another value'); 
       readln(idnum); 
       readln(payment); 
     end;{ends while statement} 
       set j:=j+1; 
       idnum[j]:=idnum; 
       payment[j]:=payment; 
End; {Put Data Into Array} 

Procedure DetermineStatisticsInformation; 
{This procedure determines which masqueraders belong to which group, tallys the total persons in a section and totals the amount of money paid in each section for costumes} 
    Begin 
     For j:=1 to size do 
     begin 
       if(payment[j]=1350 and payment[j]=1650) then 
        begin 
         writeln('Masquerader with memid:idnum[j] belongs to section1'); 
         section1:= section1+1; 
         totm1:= totm1+payment[j]; 
        end;{ends if statement} 
       if(payment[j]=1620 and payment[j]=1980) then 
        begin 
         writeln('Masquerader with memid:idnum[j] belongs to section2'); 
         section2:= section2+1; 
         totm2:=totm2+payment[j]; 
        end;{ends if statement} 
       if(payment[j]=1800 and payment[j]=2200)then 
        begin 
         writeln('Masquerader with memid:idnum[j] belongs to section3'); 
         section3:= section3+1; 
         totm3:=totm3+payment[j]; 
        end;{ends if statement} 
End. {Determine Statistics Information} 

Procedure PrintResults; 
{This procedure outputs all information} 
Begin 
    writeln('The number of masqueraders in section 1 is:', section1); 
    writeln('The number of masqueraders in section 2 is:', section2); 
    writeln('The number of masqueraders in section 3 is:', section3); 
    writeln('Total Amount of money paid in section 1 is:', totm1); 
    writeln('Total Amount of money paid in section 2 is:', totm2); 
    writeln('Total Amount of money paid in section 3 is:', totm3); 
End. {Print Results} 
+0

哦,我做到了模塊化格式,因爲我的教授說太 –

+0

難道編譯器告訴你發生了什麼線的錯誤?這將是包含在你的問題中的好信息。 –

+0

是的,他們都落在了31/15 –

回答

1

代碼充滿了錯誤,並且永遠不會編譯。

  1. 您使用idnum和付款作爲數組,但你已經聲明它爲整數!如果您需要數組,請改用IDNUMARR和PAYMENTARR。
  2. 在9號線和10聲明的全局變量IDNUMARR PAYMENTARR但你再次聲明作爲程序DeclareandInitialiseArrays一個局部變量
  3. 幾乎所有的if語句無效

    如果(金[J] = 1620和支付[J] = 1980),則

的「和」操作員進行評價總是首先,這導致邏輯比較「1620和支付[j]的」(這不是有效的語法)。

你必須把每一個比較成括號這樣的:

if(payment[j]=1620) and (payment[j]=1980) then 

4.集合的J:= J + 1; 你期望什麼應該發生? 我覺得你只是想j增加

j:=j+1; 
  • 所有程序必須終止與;並不是 。
  • 最終「開始結束」。缺少執行所有程序的地方。
  • ,也許很多人...

    +0

    嗯...謝謝你,但就像我說的即時通訊非常新的這種類型的軟件...像2天新...不要誤會我非常感謝您的答案,我將盡我所能來解決它​​....我可以再問一個問題嗎?你是否意味着在付款[j]的地方使用PAYMENTARR? –

    +0

    是的。你的數組變量是PAYMENTARR和IDNUMARR。所以你必須使用PAYMENTARR [j]和IDNUMARR [j] –

    +0

    ohhh好吧,我相信我已經修復了什麼錯誤....所以即時重新上傳我所做的...並感謝您的繼續支持! –

    0

    這是不對的,和其他線路一樣的:

    if(payment[j]=1350 and payment[j]=1650) then 
    

    讓它看起來像是(..)和(..)然後

    +0

    哦,好的,謝謝你生病了解決了你們說過要解決的問題,我將重新上傳,以便你們重新評估你們的人......謝謝你的幫助 –

    +0

    @Josiah,如果你讓你的代碼有很大的變化,你仍然有問題,最好接受這個問題的答案(如果他們有幫助),然後發佈一個新的問題與任何新問題。如果你改變這個問題的代碼,它會使你已經收到的答案無效......這不是該網站應該如何工作。 –

    +1

    @JimLewis oki我會和虐待轉發 –

    相關問題