oral_quiz-># 외곽선에서 안쪽으로 Matrix# 인쇄
#include <stdio.h>
#include <exception>
void MyPrintMatrix(int* matrix, int row, int column) {
if(matrix == NULL || row == 0 || column == 0)
throw std::exception();
//initial sign matrix to note which number has been print
int* sign = new int[row*column];
for(int i=0; i<row; ++i) {
for(int j=0; j<column; ++j)
sign[i*column+j] = 0;
}
int i=0, j=0, count=row*column;
while(1 != count) {
//move right
while(j < column-1 && !sign[i*column+j+1]) {
sign[i*column+j] = 1;--count;
printf("%d/", matrix[i*column+j]);
++j;
}
//move down
while(i<row-1 && !sign[(i+1)*column+j]) {
sign[i*column+j] = 1;--count;
printf("%d/", matrix[i*column+j]);
++i;
}
//move left
while(i>0 && !sign[(i-1)*column+j]) {
sign[i*column+j] = 1;--count;
printf("%d/", matrix[i*column+j]);
--i;
}
//move up
while(j>0 && !sign[i*column+j-1]) {
sign[i*column+j] = 1;--count;
printf("%d/", matrix[i*column+j]);
--j;
}
}
//print last number
printf("%d
", matrix[i*column+j]);
delete []sign;
}
void PrintOriginalMatrix(int* matrix, int row, int column) {
for(int i=0; i<row; ++i) {
for(int j=0; j<column; ++j) {
printf("%d ", matrix[i*column+j]);
}
printf("
");
}
}
void Test(const char* testName, int* matrix, int row, int column) {
if(testName != NULL)
printf("%s begins:
", testName);
PrintOriginalMatrix(matrix, row, column);
MyPrintMatrix(matrix, row, column);
}
//4*4
void Test1() {
int matrix[][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
Test("Test1", (int*)matrix, 4, 4);
}
//1*5
void Test2() {
int matrix[][5] = {{1,2,3,4,5}};
Test("Test2", (int*)matrix, 1, 5);
}
//5*1
void Test3() {
int matrix[][1] = {{1},{2},{3},{4},{5}};
Test("Test3", (int*)matrix, 5, 1);
}
//2*2
void Test4() {
int matrix[][2] = {{1,2},{3,4}};
Test("Test4", (int*)matrix, 2, 2);
}
//5*3
void Test5() {
int matrix[][3] = {{1,2,3},{2,3,4},{3,4,5},{4,5,6},{5,6,7}};
Test("Test5", (int*)matrix, 5, 3);
}
int main(int argc, char* argv[]) {
Test1();
Test2();
Test3();
Test4();
Test5();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java PowerPoint 인쇄오늘은 Spire.Presentation for Java에서 PowerPoint를 인쇄하는 방법을 소개합니다. 주로 두 가지 방법이 있습니다. 즉: PresentationPrintDocument 를 이용하여 Prin...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.