間違えが見つけられません...

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
zoo

間違えが見つけられません...

#1

投稿記事 by zoo » 15年前

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;
}

kazuoni

Re:間違えが見つけられません...

#2

投稿記事 by kazuoni » 15年前

x1,y1,x2,y2はint型なのに、scanfでdouble型で読み込んでいるからかと思われます。

box

Re:間違えが見つけられません...

#3

投稿記事 by box » 15年前

2点の座標値は整数ですか?浮動小数点数ですか?
今のコードでは、どちらにしたいのかがわかりません。

なお、「なぜか距離を0.00000...と表示する」という状態であるのに
「一応完成したつもり」とは言えません。

zoo

Re:間違えが見つけられません...

#4

投稿記事 by zoo » 15年前

2つの座標値は、浮動小数点数です。出来たつもりになってすみませんでした...。
よろしくおねがいします!!

kazuoni

Re:間違えが見つけられません...

#5

投稿記事 by kazuoni » 15年前

>2つの座標値は、浮動小数点数です。

ならば、浮動小数点型に変えればよいですね。(変数の宣言、関数の引数)

Alf

C言語歴一ヶ月です

#6

投稿記事 by Alf » 15年前

初めまして、本サイト様の龍神録プログラミングの館で勉強をさせていただいているものです。
どうしても、わからない所があるので質問させてください。

龍神録プログラミングの館から一括ダウンロードしたプロジェクトの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言語歴一ヶ月です

#7

投稿記事 by チルチル » 15年前

おそらくエラーが出ている行で
img_ch[j]
見たいな事をやっていると思うので
img_ch
に変えれば良いと思います

MNS

Re:C言語歴一ヶ月です

#8

投稿記事 by MNS » 15年前

img_ch[0] = LoadGraph( "../dat/img/char/0.png");
少なくともこれは
img_ch = LoadGraph( "../dat/img/char/0.png");
であると思います。

Alf

Re:C言語歴一ヶ月です

#9

投稿記事 by Alf » 15年前

>おそらくエラーが出ている行で
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言語歴一ヶ月です

#10

投稿記事 by チルチル » 15年前

他にも書き直していない所があると思うのですが
とりあえず
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);
では?

Alf

Re:C言語歴一ヶ月です

#11

投稿記事 by Alf » 15年前

おお!
見事に表示されました!
こんな基本的な見落としだったんですね。
助言していただき本当にありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る