第10講 社員が自分に命令することを繰り返す(関数の再帰的使用)
第7話 社員が自分に命令を繰り返すことによる等差数列の積の計算
等差数列の積を求めるプログラム解答例
#include<stdio.h>
int f(int a,int b,int c);
int main(){
int a,b,c;
printf("初項=");
scanf("%d",&a);
printf("末項=");
scanf("%d",&b);
printf("交差=");
scanf("%d",&c);
printf("初項%d、末項%d、交差%dのときの等差数列の積=",a,b,c);
printf("%d\n",f(a,b,c));
}
int f(int a,int b,int c){
int w;
if(b-c>=a){
w=b*f(a,b-c,c);
}
else{
return(a);
}
return(w);
}
では、第10講最後の課題のための
準備課題を考えてください。
第6講第5話で作ったプログラム
を実現するプログラムは、2次元配列を使えば
#include<iostream>
using namespace std;
int main(){
int i,j;
for(i=0;i<10;i++){
for(j=1;j<11;j++){
if(10*i+j<10){
cout<<"00"<<10*i+j<<" ";
}
else{
if(10*i+j<100){
cout<<"0"<<10*i+j<<" ";
}
else{
cout<<10*i+j<<" ";
}
}
}
cout<<endl;
}
}
を2つの添え字付き名前を持った箱(2次元配列)と
printfを用いて書き直してください。
解答例は30行下。
解答例
#include<stdio.h>
int main(){
int i,j,a[10][10];
for(i=0;i<10;i++){
for(j=0;j<10;j++){
a[i][j]=10*i+j+1;
}
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(a[i][j]<10)printf("00%d ",a[i][j]);
if(a[i][j]>=10 && a[i][j]<100)printf("0%d ",a[i][j]);
if(a[i][j]==100)printf("%d",a[i][j]);
}
printf("\n");
}
}
さて、第10講の最後の課題
すなわち、専門用語なしのC言語 C++入門第1部
の最後の課題です。
第1部最終課題ですから、
難度は非常に高いですよ。
粘り強く考えてください。
ただし、まだ、配列を渡すことは学習していませんので、
グローバル配列を
冒頭で宣言するという条件付きにしたいと思います。
さらに、ヒントとして関数は
2つのタイプを用意することを付け加えておきたいと思います。
#include<stdio.h>
int a[10][10];
void f(int i);
void g(int i,int j);
・
・
・
では、がんばって最終課題に取り組んでください。
第6話へ 第8話へ
初心者のためのjava 入門 基礎から応用まで
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
VC++入門
VBA入門
専門用語なしのVBA入門
VB入門
初心者のためのEclipseによるJava入門