ページ 1 / 1
間違えが見つけられません...
Posted: 2009年11月17日(火) 20:49
by zoo
2つの点の座標を入力し、2点間の距離を表示させるプログラムを作成中なのですが、コンパイルをするとなぜか距離が0.00000・・・と表示されてしまいます...
一応、完成したつもりですが間違いがあればご指摘よろしくお願いします!!
include<stdio.h>
#include<math.h>
double distance(int x1,int y1,int x2,int y2)
{
return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
int main(void)
{
int x1,y1,x2,y2;
double kyori;
printf("<点1>\n");
printf("x座標:");
scanf("%lf",&x1);
printf("y座標:");
scanf("%lf",&y1);
printf("<点2>\n");
printf("x座標:");
scanf("%lf",&x2);
printf("y座標:");
scanf("%lf",&y2);
kyori=distance(x1,y1,x2,y2);
printf("<2点間の距離>\n");
printf("距離:%lf\n",kyori);
return 0;
}
Re:間違えが見つけられません...
Posted: 2009年11月17日(火) 21:02
by kazuoni
x1,y1,x2,y2はint型なのに、scanfでdouble型で読み込んでいるからかと思われます。
Re:間違えが見つけられません...
Posted: 2009年11月17日(火) 21:02
by box
2点の座標値は整数ですか?浮動小数点数ですか?
今のコードでは、どちらにしたいのかがわかりません。
なお、「なぜか距離を0.00000...と表示する」という状態であるのに
「一応完成したつもり」とは言えません。
Re:間違えが見つけられません...
Posted: 2009年11月17日(火) 21:11
by zoo
2つの座標値は、浮動小数点数です。出来たつもりになってすみませんでした...。
よろしくおねがいします!!
Re:間違えが見つけられません...
Posted: 2009年11月18日(水) 00:13
by kazuoni
>2つの座標値は、浮動小数点数です。
ならば、浮動小数点型に変えればよいですね。(変数の宣言、関数の引数)
C言語歴一ヶ月です
Posted: 2009年11月29日(日) 20:51
by Alf
初めまして、本サイト様の龍神録プログラミングの館で勉強をさせていただいているものです。
どうしても、わからない所があるので質問させてください。
龍神録プログラミングの館から一括ダウンロードしたプロジェクトの21章の中の自機と敵機の絵を自分のに変えるために、絵の表示のアニメーションをなくそうとして、load.cppの
LoadDivGraph( "../dat/img/char/0.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
から
img_ch[0] = LoadGraph( "../dat/img/char/0.png");
と変えて
GV.hの変数宣言部の
GLOBAL int img_ch[12][2];
を
GLOBAL int img_ch;
に書き変えたのですが、
c:\documents and settings\yuki\デスクトップ\project\project\21章\mydat\source\graph.cpp(22) : error C2109: 配列または、ポインタでない変数に添字が使われました。
というエラーが出ました。
どうすれば、絵のアニメーションをなくして一枚絵で表示できるでしょうか?どなたか教えてください。
Re:C言語歴一ヶ月です
Posted: 2009年11月29日(日) 20:57
by チルチル
おそらくエラーが出ている行で
img_ch[j]
見たいな事をやっていると思うので
img_ch
に変えれば良いと思います
Re:C言語歴一ヶ月です
Posted: 2009年11月29日(日) 21:01
by MNS
img_ch[0] = LoadGraph( "../dat/img/char/0.png");
少なくともこれは
img_ch = LoadGraph( "../dat/img/char/0.png");
であると思います。
Re:C言語歴一ヶ月です
Posted: 2009年11月29日(日) 21:34
by Alf
>おそらくエラーが出ている行で
img_ch[j]
見たいな事をやっていると思うので
img_ch
に変えれば良いと思います
>img_ch[0] = LoadGraph( "../dat/img/char/0.png");
少なくともこれは
img_ch = LoadGraph( "../dat/img/char/0.png");
であると思います。
おっしゃられた通りに
img_ch[0] = LoadGraph( "../dat/img/char/0.png");
を
img_ch = LoadGraph( "../dat/img/char/0.png");
に書きかえ、エラーが出ているgraph.cppの
DrawRotaGraphF(ch.x+FIELD_X,ch.y+FIELD_Y,1.0f,0.0f,img_ch[0][ch.img],TRUE);
を
DrawRotaGraphF(ch.x+FIELD_X,ch.y+FIELD_Y,1.0f,0.0f,img_ch[ch.img],TRUE);
に書きかえたのですが、エラーに変化はありませんでした。
どうしたらよいのでしょうか?
Re:C言語歴一ヶ月です
Posted: 2009年11月29日(日) 21:38
by チルチル
他にも書き直していない所があると思うのですが
とりあえず
DrawRotaGraphF(ch.x+FIELD_X,ch.y+FIELD_Y,1.0f,0.0f,img_ch[ch.img],TRUE);
は
DrawRotaGraphF(ch.x+FIELD_X,ch.y+FIELD_Y,1.0f,0.0f,img_ch,TRUE);
では?
Re:C言語歴一ヶ月です
Posted: 2009年11月29日(日) 21:51
by Alf
おお!
見事に表示されました!
こんな基本的な見落としだったんですね。
助言していただき本当にありがとうございました。