2012-10-05 5 views
-1

저는 이것을 수행하는 법을 모르겠습니다 : 사용자가 콘솔에 의해 도입 된 90 개의 숫자를 삽입하고 빈 칸으로 구분하여 삽입해야하는 파스칼로 프로그램을 만들고 싶습니다. 2 차원 배열 (10x9). 누구든지 이것을 구현하는 방법을 알고 있습니까? 고마워요.Free Pascal은 배열에 숫자를 유지합니다

+0

다른 두 개의 (현재 닫힌) 질문 중 하나에서 코드를 가져 와서이 코드에 입력해야 사람들이 지금까지 시도한 것을 알 수 있습니다. (편집하고, 태그 바로 아래에있는'edit' 링크를 사용하여 코드를 붙여 넣으십시오. 그러면 코드를 붙여 넣기 만하면됩니다.) –

답변

1
var the_array:array[1..10] of array[1..9] of integer; 
var i:integer; var j:integer; 
... 
i:=1; j:=1; 
while i<=10 do begin 
    while j<=9 do begin 
     read(the_array[i,j]); 
     inc(j); 
    end; 
    j:=1; 
    inc(i); 
end; 

두 개의 인덱스를 사용하여 배열을 반복하며, read()를 호출하지 않고 채울 때 사용합니다.

+0

짧은 구현을 원하면 대신에 area [1..10,1..9]를 정의하시오. 이 코드는 공백으로 제한된 숫자를 허용하지 않습니다.이 같은 90 개의 숫자를 입력하지 않으려합니다 (공백으로 구분되지는 않습니다). –

+0

어떻게 공백 문자가 허용되지 않습니까? read()는 공백에서 멈추고, readln()은 캐리지 리턴에서만 멈춘다. 따라서 "1 3 5 2 3"과 같은 입력이 주어지면이 문자열은 5 개의 숫자로 파싱됩니다. 그리고 짧은 정의를 위해, 네, 이제는 Doublescript 배열을 선언하고 [a, b]로 선언 할 수없고 [a] [b]만으로 처리 할 수있는 Actionscript에 들어가기 때문에과 보상됩니다. – Vesper

0

FreePascal을 사용한다고 작성 했으므로 여기서 SScanF를 사용할 수 있습니다.

이 프로그램을 사용하면 공백으로 구분 된 숫자 행을 입력 할 수 있습니다. 완료되면 숫자가 인쇄됩니다.

나는 최종 사용자에게 이와 같은 것을 전달하지 않을 것이다. 대신 그래픽 사용자 인터페이스를 제공하지 않는 이유는 무엇입니까?

program Project1; 
uses 
    SysUtils; 

const 
    Lines = 10; 

type 
    TNumberArray = array[0..Lines-1,0..9] of integer; 

procedure GetNumbers(var nums:TNumberArray); 
var Line:Integer; s:String; 
begin 
    for Line := Low(nums) to high(nums) do 
    begin 
    Write('Enter line ',Line, ': '); 
    ReadLn(S); 
    SScanf(s,'%d %d %d %d %d %d %d %d %d %d', 
     [ 
     @nums[Line,0], 
     @nums[Line,1], 
     @nums[Line,2], 
     @nums[Line,3], 
     @nums[Line,4], 
     @nums[Line,5], 
     @nums[Line,6], 
     @nums[Line,7], 
     @nums[Line,8], 
     @nums[Line,9] 
     ] 
    ); 
    end; 
end; 

procedure ShowNumbers(nums:TNumberArray); 
var Line,Col:Integer; 
begin 
    for Line := Low(nums) to high(nums) do 
    begin 
    for Col:=Low(nums[Line]) to High(nums[Line]) do 
     Write(nums[Line,Col], ' '); 
    WriteLn; 
    end; 
end; 

var 
    Numbers: TNumberArray; 


begin 
    WriteLn('Enter 10 numbers'); 

    GetNumbers(Numbers); 
    ShowNumbers(Numbers); 

    WriteLn('Done. Press a key to continue.'); 
    ReadLn; 
end. 

그것은 당신이 하드 코드 열 수를하지 않도록하는 TStringList를를 사용하여 라인을 구문 분석 청소기,하지만이 작동합니다.