2014-11-08 51 views
1

我有一個問題給你。我需要在每行中寫入最大元素。例如,我的表:每行中的最大數

1 2 3 4 
5 6 7 8 
9 10 11 12 

我想4,8,12 我試過,但沒有任何結果:

Program Lab2; 
type A=array[1..5,1..5] of integer; 
var x:A; 
i,j,s,max:integer; 
Begin 
writeln('Write date:'); 
for i:=1 to 5 do 
    for j:=1 to 5 do 
    read(x[i,j]); 

for i:=1 to 5 do 
    for j:=1 to 5 do 
    begin 
    max:=x[i,1]; 
    if (max<x[i,j]) then max:=x[i,j]; 
    writeln(max); 
    end; 
readln; 

請幫我 結束。

+0

你writeln應該是在外部的,同樣的,最大:= X [1,1] – matys84pl 2014-11-08 10:00:00

+0

請更多詳情 – user3348229 2014-11-08 10:05:31

回答

1

只有三個小錯誤:

1)if (max<x[i,j])應該是第二個for循環之外,因爲你要初始化的最大值每行只有一次。

2)writeln(max);應該在第二個for循環之外,你想每行只打印一次該值。

3)read(x[i,j]);我建議要readln (x[i,j])因爲你讀只讀一個字符,與readln你的紅色大字,直到你找到一個新的行字符,這將讓你與兩個以上的數字輸入數字。

這僅適用於字符串是有意義的,你可以使用readreadln與整數

此外,我建議你寫的關鍵詞begin在你寫一個控逆變結構(在同一行,而,if等),因爲這樣它就更類似於C編碼風格約定,這是我猜想的最流行的編碼風格之一。如果你試圖爲任何語言保留類似的編碼風格,對你來說也更好。

這樣的代碼將是:

Program Lab2; 
const SIZE=3; 
type A=array [1..SIZE,1..SIZE] of integer; 
var x:A; 
i,j,max:integer; 
Begin 
    writeln('Write date:'); 
    for i:=1 to SIZE do begin 
    for j:=1 to SIZE do begin 
     readln(x[i,j]); 
    end; 
    end; 
    for i:=1 to SIZE do begin 
    max:=x[i,1]; 
    for j:=1 to SIZE do begin 
     if (max<x[i,j]) then begin 
     max:=x[i,j]; 
     end; 
    end; 
    writeln('the max value of the row ',i ,' is ',max); 
end; 
readln; 
readln; 
end. 
+0

'與讀你只讀一個character' - 至少對於整數是錯誤的。 – Abelisto 2014-11-08 10:31:24

+0

你是對的,很長一段時間沒有在帕斯卡編程,對不起 – 2014-11-08 10:34:27

+0

Thx先生心理性感 – user3348229 2014-11-08 14:15:32