菱形の計算

2540 ワード

菱形について、基本的なのはやはりfor循環の練習です。基本的な練習として、次のように私が打つのは中空菱形についての練習です。

 public void TestShape(){		
		//    
		for (int i = 0; i <3; i++) {
			//  1       
			for (int k = 0; k < 2; k++) {
				System.out.print("1");
			}
			//  2      
			for (int j = 0; j<1; j++) {
				System.out.print("2");
			}
			//  3      
			for (int j = 0; j<2; j++) {
				System.out.print("3");
			}
			System.out.println();
		}	
		
}

11233     
11233
11233
これは前の方法で打ち出された結果で、まずfor循環の入れ子を通して、その出力の結果を観察して、一番外側の層のfor循環は制御ライン数であることが分かります。
ひし形に印刷するなら、いろいろな考えがあります。ここでは主に二つの種類を示します。
第一種類
11233
12423
11233
この2の印刷軌跡は菱形であり、この平面には主に3つの数字があり、そのうち4はスペースであることが分かります。
1と3は連続的な減少と同時に2は奇数でインクリメントされますが、2行目以降は、2組の数は逆の動作をしています。

public void EmpDiamond02(int num) {
	if(1==num%2){
	      num++;
			
	}	
	int p = 0;
	for (int a = 1; a < num; a++) {
				
		for (int i = num/2; i > p; i--) {
			System.out.print("1");
		}
         //          ,       ,       ,       
	for (int k = 0; k < p * 2 + 1; k++) {
	   if(k!=0&&k!=(p*2+1)-1){
		 System.out.print("4");				
	}else{
		  System.out.print("2");
	}
    }			
				
	for (int i = num/2; i > p; i--) {
		System.out.print("3");
	}
				
//a      ,              ,     p   ,      for          ,             。
		if (a < num / 2) {
			p++;
		} else {
			p--;
		}

			System.out.println();
	}
}

第二種
121
212
121
このひし形に参加する必要がある数字は二つしかないことが分かります。この図形は主に制御2によって実現されます。
その中の計算を両方に移動します。


public void  EmpDiamond03(int num){
			
		if(0==num%2){
		    num++;			
		}
		int p1=num/2;
		int p2=num/2;
		for(int i=0;i<num;i++){			
		     for(int j=0;j<num;j++){
 //p1 p2   x         ,  ++ --     ,          。
			if(j==p1||j==p2){					 	  System.out.print("2");
			}else{
			  System.out.print("1");
			}	
					
			}	
			if(i<num/2){
				p1++;
				p2--;
			}else{
				p1--;
				p2++;
					
			}
		System.out.println();				
	}
			
}