第6講 配列
第4話 2次元配列

001
を実現するプログラム例
#include<stdio.h> //prinf()を使えるようにするためにインクルード
#include<stdlib.h> //rand()を使用できるようにインクルード
#include <time.h> //time()を使用できるようにインクルード
void f();
int main() {
  f();
  return(0);
}
void f() {
  int a[3][4], i, j; //配列aと制御変数i,jの宣言
  //srand((unsigned)time(NULL)); //乱数の系列決定するシード値を現在時刻から取得
  //ランダムデータ発生
  for (i = 0; i<3; i++) {
    for (j = 0; j<4; j++) {
      a[i][j] = rand() % 100;
    }
  }
  //データ表示
  for (i = 0; i<3; i++) {
    for (j = 0; j<4; j++) {
      if (a[i][j]<10)printf(" %d ", a[i][j]);
      if (a[i][j] >= 10)printf("%d ", a[i][j]);
    }
    printf("\n");
  }
}
さて、001の左右を反対にする、すなわち中央のところで線対称変換をさせたもの
002も表示させるとすると、
#include<stdio.h> //prinf()を使えるようにするためにインクルード
#include<stdlib.h> //rand()を使用できるようにインクルード
#include <time.h> //time()を使用できるようにインクルード
void f();
int main() {
  f();
  return(0);
}
void f() {
  int a[3][4], i, j; //配列aと制御変数i,jの宣言
  //srand((unsigned)time(NULL)); //乱数の系列決定するシード値を現在時刻から取得
  //ランダムデータ発生
  for (i = 0; i<3; i++) {
    for (j = 0; j<4; j++) {
      a[i][j] = rand() % 100;
    }
  }
  //データ表示
  for (i = 0; i<3; i++) {
    for (j = 0; j<4; j++) {
      if (a[i][j]<10)printf(" %d ", a[i][j]);
      if (a[i][j] >= 10)printf("%d ", a[i][j]);
    }
    printf("\n");
  }
  printf("\n");
  //左右反転した行列の表示
  for (i = 0; i<3; i++) {
    for (j = 0; j<4; j++) {
      if (a[i][3-j]<10)printf(" %d ", a[i][3-j]);
      if (a[i][3-j] >= 10)printf("%d ", a[i][3-j]);
    }
    printf("\n");
  }
}
とします。




さて、001のような数字の並びを行列といいます。
行は横列、列は縦列を表します。
ですから、この行列を3行4列の行列といいます。
そして、行と列を反対にした(縦横を取り換えた)
001を転置行列といいます。

もとの行列・左右反転した行列・上限反転した配列・転置行列
のすべてを表示させるプログラムを考えて下さい。
転置は難しいですが粘り強く考えて下さい。
011



第3話へ   第5話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ