みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

gnuをc言語に通して時計を作る
という課題をやっています

ビルドした結果、a、b、theta、のローカル変数は一度も使われておりませんと出てきてしまい、時計の針が出てきません

fprintf(gp, "set a=%lf, a");
fprintf(gp, "set b=%lf, b");
fprintf(gp, "set theta=%lf, theta");

と設定したつもりですがどこがどう間違えてるかわかりません
お願いします。下にソースファイルのプログラムを載せときました


#include "stdafx.h" //この文は通常、不要。単純アプリやHello worldを選ぶと必要。
#include <stdio.h> // はずしても通る
#include <stdlib.h>
#include <math.h> //数学関数の呼び出しに使用する。

#define GNUPLOT_PATH "C:/FUJITA/gnuplot/bin/pgnuplot"

int main(int argc, char* argv[])
{ double a,b,theta,k;

FILE *gp;

gp = _popen(GNUPLOT_PATH, "w");
if(gp == NULL){
fprintf(stderr, "Oops, I can't find %s.", GNUPLOT_PATH);
exit(EXIT_FAILURE);
}

fprintf(gp, "reset\n");
fprintf(gp, "set title Clock \n");
fprintf(gp, "set size square \n");
fprintf(gp, "set key off\n");
fprintf(gp, "unset border \n");
fprintf(gp, "unset xtics \n");
fprintf(gp, "unset ytics \n");
fprintf(gp, "set grid \n");
fprintf(gp, "set parametric \n");
fprintf(gp, "set xrange [-1:1] \n");
fprintf(gp, "set yrange [-1:1.2] \n");
fprintf(gp, "set pi=%lf, pi \n");
fprintf(gp, "set a=%lf, a");
fprintf(gp, "set b=%lf, b");
fprintf(gp, "set theta=%lf, theta");
fprintf(gp, "set grid \n");

for (k=0; k<10; k++){
fprintf(gp,"theta=k \n");
fprintf(gp,"set a=0.5*pi-(theta*pi)/180.0 \n");
fprintf(gp,"set b=0.5*pi-(theta*pi)/(180.0*12.0)");
fprintf(gp,"set arrow 1 from 0.0,0.0 to 0.4*cos(b),0.4*sin(b) front size 0.1,30 lt 5 lw 5 \n");
fprintf(gp,"set arrow 2 from 0.0,0.0 to 0.8*cos(a),0.8*sin(a) front size 0.1,15 lt 5 lw 3 \n");

}
fprintf(gp," set arrow 1 from 0.0,0.0 to 0.4*cos(b),0.4*sin(b) front size 0.1,30 lt 5 lw 5\n""0.4*cos(b),0.4*sin(b) \n");
fprintf(gp," set arrow 2 from 0.0,0.0 to 0.8*cos(b),0.8*sin(b) front size 0.1,15 lt 5 lw 3\n","0.8*cos(a),0.8*sin(a) \n");

fprintf(gp,"plot sin(t),cos(t)\n");
fprintf(gp,"pause 100 \n");

return (0);
}

投稿日時 - 2010-01-09 16:00:32

QNo.5579853

すぐに回答ほしいです

質問者が選んだベストアンサー

C言語でプログラムを書く前に、gnuplotに直接描画コマンドを入力して時計を描画することはできているのでしょうか?
今の命令列だと、set title Clock の部分で既に下記のようなエラーが出るはずです。gnuplotに与える命令列を完全なものにしてから、それをどのようにC言語で生成するかを考えたほうがいいと思います。

gnuplot> reset
gnuplot> set title Clock
undefined variable Clock

あと、gnuplotのことをgnuと勝手に略すのはやめて欲しいです。コンピュータ関連の世界では、GNUというのは普通全く別のものを指すので。

参考URL:http://ja.wikipedia.org/wiki/Gnuplot,http://ja.wikipedia.org/wiki/GNU

投稿日時 - 2010-01-09 17:52:58

お礼

ありがとうございます

投稿日時 - 2010-01-10 01:06:44

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

fprintf(gp, "set a=%lf, a");
fprintf(gp, "set b=%lf, b");
fprintf(gp, "set theta=%lf, theta");

変数(引数)を「"」の中に入れてどうしたいの?

fprintf(gp, "set a=%lf", a);
fprintf(gp, "set b=%lf", b);
fprintf(gp, "set theta=%lf", theta);

でしょ?
(他は、全く見ていないです。)

投稿日時 - 2010-01-09 16:05:49

お礼

ありがとうございます

投稿日時 - 2010-01-10 01:07:10

あなたにオススメの質問