開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料、light版)
- 言語: C
- コンパイラ: UNIX ccコンパイラ (汎用UNIX)
『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646)の5章(配列、修飾子および数値の使用)5.5(数値の読み込み)設問5-2を解いてみる。
5-2.
widthのコメントが*/で閉じられてないから変数widthが宣言されていることを認識できない。
以下に修正したコード
コード(TextWrangler)
#include <stdio.h> char line[100];/* 入力データの行 */ int height; /* 三角形の高さ */ int width; /* 三角形の底辺 */ int area; /* (算出された) 三角形の面積 */ int main(){ printf("Enter width height? "); fgets(line, sizeof(line),stdin); sscanf(line, "%d %d", &width, &height); area = (width * height) / 2; printf("The area is %d\n", area); return (0); }
入出力結果(Terminal)
$ cc -g -o c_program c_program.c $ ./c_program Enter width height? 10 20 The area is 100 $ ./c_program Enter width height? 5 5 The area is 12 $
変数widthが宣言されてることは認識できるようになったけど、高さ、底辺ともに奇数の時に三角形の面積がおかしなことになる(原因は割る2の箇所で整数になる)ので整数(%d変換)ではなく浮動小数点数(%f変換)に修正。
コード(TextWrangler)
#include <stdio.h> char line[100];/* 入力データの行 */ float height; /* 三角形の高さ */ float width; /* 三角形の底辺 */ float area; /* (算出された) 三角形の面積 */ int main(){ printf("Enter width height? "); fgets(line, sizeof(line),stdin); sscanf(line, "%f %f", &width, &height); area = (width * height) / 2.0; printf("The area is %f\n", area); return (0); }
入出力結果(Terminal)
$ ./c_program Enter width height? 10 20 The area is 100.000000 kamimuras-MacBook-Pro:c kamimura$ ./c_program Enter width height? 5 10 The area is 25.000000 kamimuras-MacBook-Pro:c kamimura$ ./c_program Enter width height? 5 5 The area is 12.500000 $
0 コメント:
コメントを投稿