全国5万人が受講している「サイタ」

C言語プログラミング入門講座・スクール

C言語プログラミング入門講座・スクールを選ぶ

初回60分無料体験OK

まずは60分の体験レッスンからスタート。
無料で実際のレッスンを体感できます。

月々4,900円〜の低料金

先生ひとりじめの個人レッスンを、この価格でご提供。レッスンは全てプライベート形式の60分間です。

通わない月は0円

曜日と時間を選べるので、
無理なくマイペースに通えます。

詳しくはこちら

プログラミングスクールC言語プログラミング入門講座神奈川 楽しめるC言語セミナー スクールブログ プログラミング...

プログラミングの醍醐味(続き)

前回のつづきです。

例題は「九九のアルゴリズムを考えてください」でした。

まずは最初の縛り、かけ算の演算子(*)を使わない場合の書き方です。

これは、かけ算=足し算の繰り返しであることを利用します。例えば以下のようになります。

int kuku(int a, int b){
 int i,answer=0;

 for(i=1;i<=b;i++){
  answer=answer+a;
 }

 return answer;
}

途中に出てくるforの部分の詳細は改めて説明しますが、この部分では「aをb回足す」ということをやっています。

例えばaが5でbが6の場合、答えが30になることを確認してみてください。

では、演算自体を使わないやり方はどうでしょう? この場合は、あらかじめ九九の答えをデータとして用意しておいて、その答えを参照するやり方が考えられます。

int kuku(int a, int b){
 int answer[9][9]=
 {{1,2,3,4,5,6,7,8,9},
  {2,4,6,8,10,12,14,16,18},
  {3,6,9,12,15,18,21,24,27},
  {4,8,12,16,20,24,28,32,36},
  {5,10,15,20,25,30,35,40,45},
  {6,12,18,24,30,36,42,48,54},
  {7,14,21,28,35,42,49,56,63},
  {8,16,24,32,40,48,56,64,72},
  {9,18,27,36,45,54,63,72,81}};

 return answer[a-1][b-1];
}

最後のreturnでaとbをマイナス1しているのには、理由があります。それは、最初に定義したデータが「配列」と呼ばれるものだからです。配列の詳細はそのうち説明しますが、この配列の要素と呼ばれるものが「0番目」から始まるものであるため、マイナス1しているのです。

2番目のアルゴリズムはかなり強引ですが、演算の手間を省けるため実行時間を速くできる可能性があるというメリットがあります。一方で、データの容量を取る大きなデメリットがあるので、あまりおすすめはできませんが。

以上、前回の補足編でした。

 

(2014年1月24日(金) 12:37)

前の記事

次の記事

この記事を書いたコーチ

富士通でソフトウェア開発を担当。楽しいプログラミングの醍醐味、教えます

楽しめるC言語セミナー
源田雄一 (C言語)

品川・横浜・戸塚・目黒・渋谷・新宿・武蔵中原・溝の口・立川・新横浜・中山・長津田・成...

ブログ記事 ページ先頭へ