Problem

1 /12


행렬이란 무엇입니까? 창조, 전시

Theory Click to read/hide

소개
정보로 작업할 때 표 형식 데이터를 처리해야 하는 경우가 매우 많습니다. 최신 프로그램은 이러한 데이터로 작업하는 경우가 많습니다. 가장 간단한 예는 tic-tac-toe, 체스, 체커 등 체크 무늬 보드에서 게임을 프로그래밍하는 것입니다.

수학에서는 이러한 구조를 행렬이라고 합니다.
 
행렬은 동일한 유형의 요소(숫자, 문자열 등)로 구성된 직사각형 테이블입니다. .)< /div>
파스칼의 이러한 데이터는 2차원 배열("배열의 배열")로 저장 및 처리될 수 있습니다.
테이블의 데이터를 처리하려면 각 셀(셀)의 상태를 기억해야 합니다. 각 셀에는 행 번호와 열 번호의 두 가지 숫자가 있습니다.
행렬에서 각 요소에는 두 개의 인덱스가 있습니다. 먼저 행 번호가 표시된 다음 열 번호가 표시됩니다. 행과 열의 번호 매기기는 0부터 시작합니다.
예를 들어, 요소 A[1][2]는 두 번째 행과 세 번째 열에 위치한 요소입니다.

일반 배열(목록)과 마찬가지로 행렬을 사용하려면 행렬을 만들고 입력하고 처리하고 표시하는 방법을 배워야 합니다.
 
매트릭스 생성
과제
0으로 채워진 주어진 크기의 행렬을 메모리에 생성합니다. <사업부>
행렬을 올바르게 생성하려면 컴파일러가 메모리의 모든 문자열을 다른 개체로 생성하도록 강제해야 합니다.
이렇게 하려면 먼저 빈 배열을 만든 다음 행렬의 행 수를 지정하고 루프에서 setLength() 메서드를 사용하여 각 행의 요소 수를 지정해야 합니다. 엔 := 3 남 := 2 setLength(A, N); for i := 0에서 N - 1 do   setLength(A[i], M);

 

임의 값으로 행렬 채우기
행렬을 만든 후 임의의 값으로 채울 수 있습니다. 각 요소에는 두 개의 인덱스가 있으므로 중첩 루프를 사용해야 합니다. for i := 0에서 N까지 시작 for j := 0에서 M까지 시작 A[i][j] := ...   끝; 끝;  
매트릭스 표시

두 개의 중첩된 루프는 일반적으로 목록을 처리하고 표시하는 데 사용됩니다. 첫 번째 주기는 줄 번호로, 두 번째 주기는 줄 내부의 요소로 이루어집니다.
행렬을 행별로 표시하려면 한 행 내에서 숫자를 공백으로 구분하고 다음 조각을 작성해야 합니다.

for i := 0 to length(A) - 1 do begin // length(A) - 행렬 A의 행 수 반환     for j := 0 to length(A[i]) - 1 do // length(A[i]) - 문자열 i의 요소 수 반환         write(a[i][j], ' ');     writeln(); // 라인이 표시된 후 개행을 수행합니다. 끝;

동일하지만 인덱스가 아닌 목록 값으로 순환합니다(for 루프는 목록(배열), 문자열의 모든 요소를 ​​반복할 수 있음):

for row in a do begin // 행렬 a의 모든 행을 반복합니다.     for elem in row do // 행의 모든 ​​요소를 ​​반복합니다.         write(요소, ' ');     writeln(); 종료;

Problem

바이너리 행렬(0과 1로만 구성된)을 체커보드 패턴으로 채웁니다. 왼쪽 상단 모서리에 null 요소가 있어야 합니다.
 

입력
입력 문자열에는 행 수 N 열 수 M ( 1 < = N , ;M <= 100 ).
 

출판 
프로그램은 이진 행렬을 행별로 출력해야 합니다.
 

<헤드> <몸>
# 입력 출력
1 4 5 <예비> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1