プログラミング入門I 宿題 2019.01.21

Back


1から5の範囲の整数を4つ発生させ,それらを点PおよびQの座標P(x1,y1)およびQ(x2,y2)とする.このとき,以下のように xy 平面にプロットするプログラムを作成せよ.

なお,プロットは点PとQが重なる場合もあり得るし,また,PやQの表示と点の * 記号が重なる場合もあり得る.優先順位としては,まず * が確実に表示されるようにすること.PもしくはQが * のために表示されない場合がありうる.

My student number: s186099

Points: P(2,2), Q(4,5)

y
5 |       *Q   
4 |            
3 |            
2 |   *P       
1 |            
0 +----------
  0 1 2 3 4 5 x

---------------------------------
My student number: s186099

Points: P(4,1), Q(5,1)

y
5 |            
4 |            
3 |            
2 |            
1 |       * *Q 
0 +----------
  0 1 2 3 4 5 x

---------------------------------
普通の例プロットが重なった例

なお,結果の出力では必ず最初の行に自分の学生番号を,最後にハイフンによるラインをつけること.無い場合には減点するので注意.

2次元表示は外側のループが y 座標を管理し,内側が x 座標となります. if - else 文をうまく組み合わせてプロットしてください.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

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

// ************************************************** 
//                                                    
//      レポート課題                                    
//      2019.01.21                                    
//                                                    
// ************************************************** 
//                                                    
//      学生番号:                                     
//                                                    
//      氏名:                                         
//                                                    
// ************************************************** 
//                                                    
//      
              
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	srand((unsigned) time(NULL));
	
	printf("My student number: s186099\n\n");
	
	int x, y, x1, x2, y1, y2;
	
	x1 = rand() % 5 + 1;
	y1 = rand() % 5 + 1;
	x2 = rand() % 5 + 1;
	y2 = rand() % 5 + 1;
	
	printf("Points: P(%d,%d), Q(%d,%d)\n\ny\n", x1, y1, x2, y2);
		
	for(y=5; y>=1; y--)
	{
		printf("%d |", y);
		
		for(x=1; x<=6; x++)
		{
			if(x==x1 && y==y1)
			{
				printf(" *");
			}
			else if(x==x2 && y==y2)
			{
				printf(" *");
				
			}
			else if(x==x1+1 && y==y1)
			{
				printf("P ");
			}
			else if(x==x2+1 && y==y2)
			{
				printf("Q ");
			}
			else
			{
				printf("  ");
			}
		}
		
		printf("\n");
	}
	
	printf("0 +");
	
	for(x=1; x<=5; x++)
	{
		printf("--");
	}
	
	printf("\n  ");
	
	for(x=0; x<=5; x++)
	{
		printf("%d ", x);
	}
	
	printf("x\n\n---------------------------------\n\n");
	
	return 0;
}


Back