ページ 11

関数(?)で困っています……

Posted: 2012年6月03日(日) 18:59
by miki
はじめまして、C言語を学び始めてやっと2カ月くらいの初心者です。
今回初めてトピックと立たせていただきましたが、タイトルの通りおそらく関数の部分が分からなくて困っています。

問題は以下の通りです。

問題:C言語で半径1の円周上にあるn角形(nは入力)の座標を表示するプログラムを作れ
条件:X軸の値を返す関数get_x(double r, double angle)とY軸の値を返すget_y(double r, double angle)を使用すること。

この問題に対し僕が書いたのが以下の通りです。

コード:

#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979353846
#define r 1

double get_x(double r, double angle);
double get_y(double r, double angle);

main()
{
	int c,n,i;
	double x,y,angle,kakudo;
	
	n=0;
	while('0'<=(c=getchar()) && c<='9')
	{
		n=10*n+(c-'0');
	}
	
	kakudo=2*PI/n;
	for(i=0; i<=n; ++i)
	{
		angle=kakudo*i;
		printf("%9.5f,%9.5f\n", get_x(r,angle), get_y(r,angle));
	}
}

double get_x(double r, double angle)
{
	x=r*cos(angle);
	return x;
}

double get_y(double r, double angle)
{
	y=r*cos(angle);
	return y;
}
これをコマンドプロントでコンパイルすると
22_2.c(6) : error C2143: 構文エラー : ')' が '定数' の前にありません。
22_2.c(6) : error C2143: 構文エラー : '{' が '定数' の前にありません。
22_2.c(6) : error C2059: 構文エラー : '<不明>'
22_2.c(6) : error C2059: 構文エラー : ')'
22_2.c(7) : error C2143: 構文エラー : ')' が '定数' の前にありません。
22_2.c(7) : error C2143: 構文エラー : '{' が '定数' の前にありません。
22_2.c(7) : error C2059: 構文エラー : '<不明>'
22_2.c(7) : error C2059: 構文エラー : ')'
22_2.c(29) : error C2143: 構文エラー : ')' が '定数' の前にありません。
22_2.c(29) : error C2143: 構文エラー : '{' が '定数' の前にありません。
22_2.c(29) : error C2059: 構文エラー : '<不明>'
22_2.c(29) : error C2059: 構文エラー : ')'
22_2.c(35) : error C2143: 構文エラー : ')' が '定数' の前にありません。
22_2.c(35) : error C2143: 構文エラー : '{' が '定数' の前にありません。
22_2.c(35) : error C2059: 構文エラー : '<不明>'
22_2.c(35) : error C2059: 構文エラー : ')'
と出てしまいます。

何が問題なのか色々試しても分かりませんでした。
どうか力を貸してください!!

最後にここの掲示板を使用するのは初めてなので何か質問の方法に問題がありましたら教えていただけると光栄です。

Re: 関数(?)で困っています……

Posted: 2012年6月03日(日) 19:07
by へにっくす
えっと、、

コード:

#define r 1
このdefineがあるおかげで、6行目の

コード:

double get_x(double r, double angle);

コード:

double get_x(double 1, double angle);
に置き換わってしまってます。
関数の宣言に定数はNGなのは分かりますよね?

Re: 関数(?)で困っています……

Posted: 2012年6月03日(日) 19:10
by box
miki さんが書きました:

コード:

#define r 1
この#defineの意味を教えてください。
また、math.hをインクルードしてあれば、円周率を独自にインクルードする必要は特にないように思います。
miki さんが書きました: これをコマンドプロントでコンパイルすると
コマンドプロンプト
command prompt

Re: 関数(?)で困っています……

Posted: 2012年6月03日(日) 19:18
by miki
boxさん、へにっくすさん
素早く分かりやすい解答ありがとうございます!!
まだまだ勉強が足りないと痛感しましたが、おかげさまで無事完成できました。

コード:

define r 1
は「半径は1」を表現したつもりでした。

またどうしても自分では解決できないことが出てきたらよろしくお願いします。

Re: 関数(?)で困っています……

Posted: 2012年6月03日(日) 21:28
by みけCAT
box さんが書きました:また、math.hをインクルードしてあれば、円周率を独自にインクルードする必要は特にないように思います。
揚げ足取りですみません。
円周率はincludeではなくdefineされてますよね?

Re: 関数(?)で困っています……

Posted: 2012年6月03日(日) 21:41
by beatle
なんと円周率を表すM_PIという定数は、ANSI-Cでは提供されないらしいです。
参考:M_PI : 定義されていない識別子です

ということで、ANSI-Cに従ったプログラムを書くなら円周率を自分で定義するのは間違っていないと思います。