

2.3 多次元配列 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 多次元配列の考え方 | |
| (2) | 数値地図 | |
| (3) | 経過日数 | |

| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 多次元配列の考え方 | |
| (2) | 数値地図 | |
| (3) | 経過日数 | |

| private double [,] pbJR=new double[201,201]; private string pbA; private Bitmap image; // 描画用オーバライド protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.DrawImage(image,0,0); } private void 描画() { double MX=標高最大(); double MN=標高最小(); double DX=(MX-MN)/255; if(DX<0.000001) DX=255; Graphics g=Graphics.FromImage(image); for(int i=1; i<=200; i++) for(int j=1; j<=200; j++) { int C=(int)((pbJR[201-j,i]-MN)/DX); Brush brush = new SolidBrush(Color.FromArgb(C,C,C)); g.FillRectangle(brush,j-1,i-1,1,1); } } private double 標高最大( ) { double MX=pbJR[1,1]; for(int i=1;i<=200;i++) for(int j=1;j<=200;j++) if(MX<pbJR[i,j]) MX=pbJR[i,j]; return MX; } private double 標高最小( ) { double MN=pbJR[1,1]; for(int i=1;i<=200;i++) for(int j=1;j<=200;j++) if(MN>pbJR[i,j]) MN=pbJR[i,j]; return MN; } private void openFileDialog1_FileOk(object sender, System.ComponentModel.CancelEventArgs e) { StreamReader DTS; int ii, pbII; string FName=openFileDialog1.FileName; if(FName == "") return; DTS=new StreamReader(FName,System.Text.Encoding.Default); pbA=DTS.ReadLine(); // 制御データの無視 pbII=0;string DT=DTS.ReadLine(); // 1行読込み while(DT !=null) { ii = 5; pbII=pbII+1; for(int j=1;j<=200;j++) // 5桁ずつ区切って西→東にデータを設定 { ii = ii + 5; pbJR[pbII, j] = int.Parse(midStr(DT, ii, 5)); } DT=DTS.ReadLine(); // 1行読込み } DTS.Close();描画(); this.Invalidate(); // OnPaintを強制的に引き起こす } private string midStr(string DT, int ist,int N) { string S="";int k=ist-1; for(int i=1 ;i<=N;i++){S = S + DT[k]; k=k+1;} return S; } private void button1_Click(object sender, System.EventArgs e) { openFileDialog1.ShowDialog(); } private void Form1_Load(object sender, System.EventArgs e) { image =new Bitmap(200,200); } |
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 多次元配列の考え方 | |
| (2) | 数値地図 | |
| (3) | 経過日数 | |

| private int[,] 月日数= new int[,] { {31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}, }; private int うるう年判定(int Y) { return (Y % 4 ==0 && Y % 100 !=0 || Y % 400 ==0)? 1:0; } private int 経過日数(int Y, int M, int D) { int i; int 日数=D; int K= うるう年判定(Y); for (i=1; i<M; i++) 日数 += 月日数[K,i-1]; return 日数; } private void button1_Click(object sender, System.EventArgs e) { int Y=int.Parse(textBox1.Text); int M=int.Parse(textBox2.Text); int D=int.Parse(textBox3.Text); label4.Text=経過日数(Y,M,D).ToString(); } |
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 多次元配列の考え方 | |
| (2) | 数値地図 | |
| (3) | 経過日数 | |