第8講 関数(2)
第8話 性格表示プログラムの分業
実行結果が
太郎は明るく前向き
花子は優しく忍耐強い
次郎は活動的で忍耐強く繊細
となり、
性格項目の代入はf()、名前の入力はg()、つなぎ言葉(『は』と『で』)の代入はh()、
組み合わせてからの表示はhy()が担当するという分業を実現するプログラム例
#include<stdio.h>
#include<string> //string型を使うために必要
using namespace std; //string型を使うために必要なお呪い
void f(string a[]);
void g(string n[]);
void h(string s[]);
void hy(string a[], string n[], string s[]);
int main() {
string a[10],n[5],s[2];
f(a); //性格項目代入
g(n); //名前入力
h(s); //つなぎ言葉入力
hy(a, n, s); //各人の性格表示
}
void f(string a[]) {
a[0] = "明るい";
a[1] = "明るく";
a[2] = "活動的";
a[3] = "積極的";
a[4] = "前向き";
a[5] = "優しい";
a[6] = "優しく";
a[7] = "忍耐強い";
a[8] = "忍耐強く";
a[9] = "繊細";
}
void g(string n[]) {
n[0] = "太郎";
n[1] = "花子";
n[2] = "次郎";
n[3] = "優子";
n[4] = "三郎";
}
void h(string s[]) {
s[0] = "は";
s[1] = "で";
}
void hy(string a[], string n[], string s[]) {
string w;
w = n[0] + s[0] + a[1] + a[4];
printf("%s\n", w.c_str());
w = n[1] + s[0] + a[6] + a[7];
printf("%s\n", w.c_str());
w = n[2] + s[0] + a[2] + s[1] + a[8] + a[9];
printf("%s\n", w.c_str());
}
関数hy()では一部の組み合わせしか使っていません。
名前でいえば『優子』『三郎』が使われてしませんし、
性格項目では『積極的』が使われていません。
それらも組み合わせて下さい。
また、性格項目を10項目にしましたが、
実際にはもっともっとありますね。
for文とif文と今回の性格表示プログラムを組み合わせれば、
高校の先生を悩ませる推薦書を自動的に書き上げるソフトの開発も可能です。
推薦書原本をスキャナーで取り込むと、
数秒以内で推薦書を仕上げて、
アプトプットしてくれるソフトです。
推薦書を書くために生徒にアンケートをとっても、
多くの生徒は『明るい』などの単語しか書いてくれません。
こういった単語のみを入力すると、
自動的に文章にしてくれるソフトを皆さんはご自分で作れるのですよ。
もちろん、コンピュータが作った文章は原案にすぎませんので、
推敲する必要があるでしょうが、
原案が数秒で出来てしまえば、
推薦書作成もずいぶんと楽になると思いませんか。
推薦書作成という特殊な業務だけでなく、
自分の仕事を手助けするソフトも自分で開発可能ですね。
一般文書自動作成ソフトの開発でさえ可能です。
皆さん是非、ご自分で開発して仕事の効率を上げて下さい。
さて、以上で関数(2)の講は終了としまして、
分身の術である関数の再帰的使用をテーマとする講に話を進めます。