今書いているC言語の説明記事ですが、最終的には下にあるプログラムでどの部分で何をしているかがつかめるというレベルあたりまで書きたいかなぁと思います。
自分の力量がかなり不足しているので、きちんと最後まで説明できるかどうかが微妙なのですが(汗)
自分の力量がかなり不足しているので、きちんと最後まで説明できるかどうかが微妙なのですが(汗)
#include<stdio.h>
#include<math.h>
int keisan(int x,int y,int z);
int main(void){
int a,b,c,flag = 0,tmp;
double ans[2];
while(flag != 1){
printf("ax^2+bx+c=0の解を求めます。a,b,cには整数を入力してください\n");
printf("a = ?\n");
scanf("%d",&a);
printf("b = ?\n");
scanf("%d",&b);
printf("c = ?\n");
scanf("%d",&c);
tmp = keisan(a,b,c);
if(tmp<0){
printf("実数解なし\n");
}
else{
ans[0] = (-1*b+sqrt(tmp))/(2*a);
ans[1] = (-1*b-sqrt(tmp))/(2*a);
if(ans[0] == ans[1]){
printf("ans = %5.3f(重解)\n",ans[0]);
}
else{
printf("ans = %5.3f , %5.3f\n",ans[0],ans[1]);
}
}
printf("終了の場合、1を入力。1以外の数字の場合継続\n");
scanf("%d",&flag);
}
return 0;
}
int keisan(int x,int y,int z){
int hanbetsu = y*y-4*x*z;
return hanbetsu;
}
ちなみに、このプログラムでは2次方程式の解を求めてます。
なんとなく作ってみたら、一応動くようになって、個人的には(説明のネタにするにも出来的にも)よくできたとは思うので、「最終的にはこのへんまでやりたいです」という意味で載せてみました。
まあ、色々使うために、やや面倒くさく書いているところもありますが……。(判別式の計算は、別に関数をわけなくてもできるし)
それに、この程度のプログラムなら、もっといいのがどこかで公開されているでしょうしね~。
まあ、最後に「このプログラムの余分なところを直してみましょう」みたいな練習問題を作るのもいいかもですね。
なんとなく作ってみたら、一応動くようになって、個人的には(説明のネタにするにも出来的にも)よくできたとは思うので、「最終的にはこのへんまでやりたいです」という意味で載せてみました。
まあ、色々使うために、やや面倒くさく書いているところもありますが……。(判別式の計算は、別に関数をわけなくてもできるし)
それに、この程度のプログラムなら、もっといいのがどこかで公開されているでしょうしね~。
まあ、最後に「このプログラムの余分なところを直してみましょう」みたいな練習問題を作るのもいいかもですね。
あと、フラグって、どうなんだろ?
なんか、昔、普通の数値計算でフラグを入れるのはあんまりうまくないプログラムとか言われてしまった気もしますが。
まあ、余裕のある人は、コピペでプログラムを書いてみて、どんなふうに動作をしているのか見てもらえればなーとか思います。
なんか、昔、普通の数値計算でフラグを入れるのはあんまりうまくないプログラムとか言われてしまった気もしますが。
まあ、余裕のある人は、コピペでプログラムを書いてみて、どんなふうに動作をしているのか見てもらえればなーとか思います。
あと、自分は最近、エディタを「C言語をはじめよう」から「bcpad」に変えてます。
bcpadも無料のエディタです。
ダウンロードは……ちょっとどこでできるかわかりません。
自分の場合は、学校の誘導にしたがってダウンロードしたので(汗)
コンパイラをすでに入れていたこともあって、結構スムーズに変えることが出来ました。
bcpadは、文字が小さいですが、その分、自分の目に入る部分が多くなるので、それなりにやりやすくなりました。
bcpadも無料のエディタです。
ダウンロードは……ちょっとどこでできるかわかりません。
自分の場合は、学校の誘導にしたがってダウンロードしたので(汗)
コンパイラをすでに入れていたこともあって、結構スムーズに変えることが出来ました。
bcpadは、文字が小さいですが、その分、自分の目に入る部分が多くなるので、それなりにやりやすくなりました。