プロが教える店舗&オフィスのセキュリティ対策術

下のプログラムは入力した4つ数字を円グラフで表示するものでこのプログラムをもとに棒グラフで表示するように変換しなくてはならないのですがHgwBoxFill関数を使うらしいのですがいろいろ試行錯誤してみてもできないのでどなたか教えてくれませんか?

1: /* プログラム始め */ 
2: #include <stdio.h> 
3: #include <math.h> 
4: #include "handy.h" 
5: 
6: /* プロトタイプ宣言 */ 
7: void draw_graph(int w, double start, double val, char *str); 
8: 
9: int main(void) 
10: { 
11:  int w; /* ウィンドウID */ 
12:  int c; /* 文字入力用 */ 
13:  double XBASE = 100.0; /* ウィンドウ設定 */ 
14:  double YBASE = 100.0; 
15:  double WINSIZE = 500.0; 
16:  int in1, in2, in3, in4; /* グラフ表示する数値 */ 
17:  int total; /* グラフ表示する数値の総和 */ 
18:  double sum; /* グラフ表示する数値の累積 */ 
19:  double d1, d2, d3, d4; /* グラフ表示する数値の割合 */ 
20: 
21:  /* グラフ表示する数値の読み込み */ 
22:  printf("四つの正整数を入力してください >> "); 
23:  scanf("%d %d %d %d", &in1, &in2, &in3, &in4); 
24: 
25:  /* 各項がグラフ内で占める割合の計算 */ 
26:  total = in1 + in2 + in3 + in4; /* 総和の計算 */ 
27:  d1 = (double)in1 / (double)total; /* 割合の計算 */ 
28:  d2 = (double)in2 / (double)total; 
29:  d3 = (double)in3 / (double)total; 
30:  d4 = (double)in4 / (double)total; 
31: 
32:  /* ウィンドウの生成 */ 
33:  w = HgWOpen(XBASE, YBASE, WINSIZE, WINSIZE); 
34: 
35:  /* 線の幅指定 */ 
36:  HgWWidth(w, 3.0); 
37: 
38:  /* グラフの表示 */ 
39:  sum = 0.0; /* 1項目めの表示 */ 
40:  HgWColor(w, HG_RED); 
41:  draw_graph(w, sum, d1, "A"); 
42: 
43:  sum += d1; /* 2項目めの表示 */ 
44:  HgWColor(w, HG_BLUE); 
45:  draw_graph(w, sum, d2, "B"); 
46: 
47:  sum += d2; /* 3項目めの表示 */ 
48:  HgWColor(w, HG_GREEN); 
49:  draw_graph(w, sum, d3, "C"); 
50: 
51:  sum += d3; /* 4項目めの表示 */ 
51:  HgWColor(w, HG_ORANGE); 
53:  draw_graph(w, sum, d4, "D"); 
54: 
55:  /* 最後に円表示 */ 
56:  HgWColor(w, HG_BLACK); 
57:  HgWCircle(w, 250.0, 250.0, 200.0); /* 外側の円 */ 
58: 
59: 
60:  printf("Push Any Key "); 
61:  c = getchar( ); 
62:  c = getchar( ); 
63: 
64:  printf("Goodby!\n"); 
65: 
66:  return 0; 
67: } 
68: 
69: /* */ 
70: /* グラフ表示する関数 */ 
71: /* */ 
72: void draw_graph(int w, double start, double val, char *str) 
73: { 
74:  double x, y; /* 座標 */ 
75:  double rad; /* 角度 */ 
76: 
77:  /* グラフの表示 */ 
78:  rad = 2.0 * M_PI * (start + val); /* 角度計算 */ 
79:  x = sin(rad) * 200.0 + 250.0; /* 座標計算 */ 
80:  y = cos(rad) * 200.0 + 250.0; 
81:  HgWLine(w, 250.0, 250.0, x, y); /* グラフ表示 */ 
82: 
83:  /* 項目名の表示 */ 
84:  rad = 2.0 * M_PI * (start + val / 2.0); /* 角度計算 */ 
85:  x = sin(rad) * 120.0 + 250.0; /* 座標計算 */ 
86:  y = cos(rad) * 120.0 + 250.0; 
87:  HgWColor(w, HG_BLACK); 
88:  HgWText(w, x, y, str); /* 項目名表示 */ 
89: 
90:  return; /* void型関数なので返り値なし */ 
91: } 
92: /* プログラム終わり */ 

gnome端末がデスクトップ環境です

A 回答 (1件)

>gnome端末がデスクトップ環境です



もうちょっとまともに環境書きましょうや。
Linuxだっていうならディストリビューションはなんです?
少なくとも、CentOS6.xでは標準リポジトリにHandyGraphicsはないみたいですが……。

「HgWLine」で検索したら、
http://www.cse.kyoto-su.ac.jp/~oomoto/lecture/pr …
こんなページを見つけた。
「HgWText」で検索したら、
http://sml.me.es.osaka-u.ac.jp/jse/kadai/sample0 …
とか引っかかった。

大学関連でないとHandyGraphicsのライブラリとか入手できない…んじゃないですかね?
であれば、関係する大学生以外には回答もできないワケで……。
# だいたいHgwBoxFill関数の仕様すら不明なんですよ。
# ヘッダファイル掲示されれば、もしかしたら予想くらいは出来るかも知れませんが。(私はする気ありませんが)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!