情報科学演習 宿題 2015.01.05

Back


マトリックス状の表示を以下のように行なうプログラムを作成せよ.

My student number: s144099
Random number: 9

  0 1 2 3 4 5 6 7 8       8 7 6 5 4 3 2 1 0
0       x               8               x x
1                       7     x           x
2               x       6
3                       5             x   x
4         x             4         x
5 x   x                 3
6                       2   x
7 x           x         1
8 x x                   0           x

----------------------------

解答用紙を使用する際には,まず,科目名の不要な方を削除してください.また,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,コンパイルエラーが出る,実行時に警告が出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
	srand((unsigned) time(NULL));
	
	int i, j, element, num;
	num = rand() % 6 + 5;
	int matrix[num][num];
	
	printf("My student number: s144099\n");
	printf("Random number: %d\n\n", num);
	
	printf("  ");
	
	for(i=0; i<=num-1; i++)
		printf("%-2d", i);
	
	printf("     ");
	
	for(i=0; i<=num-1; i++)
		printf("%2d", num-1-i);
	
	printf("\n");
	
	for(i=0; i<=num-1; i++)
		for(j=0; j<=num-1; j++){
			element = rand() % 10;
			
			if(element==0)
				matrix[i][j] = 0;
			else
				matrix[i][j] = 1;
		}
	
	for(i=0; i<=num-1; i++){
		printf("%d ", i);
		
		for(j=0; j<=num-1; j++)
			if(matrix[i][j]==0)
				printf("x ");
			else
				printf("  ");
		
		printf("    %d ", num-1-i);
		
		for(j=num-1; j>=0; j--)
			if(matrix[num-1-i][j]==0)
				printf("x ");
			else
				printf("  ");
		
		printf("\n");
	}
	
	printf("\n----------------------------\n\n");
	
	return(0);
}


Back