#include<stdio.h>
int main(void)
{
int x1, y1, x2, y2;
float a = x1 * y2;
float b = x2 * y1;
float c = a - b;
float d = 2;
float s;
printf("点Aの座標を入力してください。\n");
scanf("%f%f",&x1,&y1);
printf("点Bの座標を入力してください。\n");
scanf("%f%f",&x2,&y2);
s = c * (1/2);
printf("三角形OABの面積は%fです。\n", s);
return 0;
}
原点をOとするx-y平面内の点A(x1,y1)と点B(x2,y2)の座標をキーボードから入力し、三角形OABの面積を出力
Re: 原点をOとするx-y平面内の点A(x1,y1)と点B(x2,y2)の座標をキーボードから入力し、三角形OABの面
何回やってもエラーしか出なくて焦ってます。
どこがおかしいとか教えてほしいです。
どこがおかしいとか教えてほしいです。
- Hiragi(GKUTH)
- 記事: 167
- 登録日時: 13年前
- 住所: 大阪府
- 連絡を取る:
Re: 原点をOとするx-y平面内の点A(x1,y1)と点B(x2,y2)の座標をキーボードから入力し、三角形OABの面
言語は何か、開発環境、それと現状何ができなくて、どのようなエラーが出ているのかを書いておかないと回答し辛いです。
加えてコードタグで括ってソースコードは投稿するようお願いします。
パッと見た感じ
・6-9行目で初期化されていない変数が計算に利用されていたり代入されている。
・14,17行目で書式指定子には実数型が使用されているのにかかわらず整数値の変数を指定している。
ぐらいでしょうか。
加えてコードタグで括ってソースコードは投稿するようお願いします。
パッと見た感じ
・6-9行目で初期化されていない変数が計算に利用されていたり代入されている。
・14,17行目で書式指定子には実数型が使用されているのにかかわらず整数値の変数を指定している。
ぐらいでしょうか。
だいがくせい!
Re: 原点をOとするx-y平面内の点A(x1,y1)と点B(x2,y2)の座標をキーボードから入力し、三角形OABの面
三角形の面積の計算公式を計算して、その結果を出力するということはなんとなくわかりますが、
先にa=x1*y2やb=x2*y1を定義+計算してしまっていることが原因だと思われます。
その後にコンソールからx1,x2,y1,y2の値を入力しようとしているので、順番を変えるとよいと思います。
あとdは使っていないのでいらないと思います。
なので以下のような形にすればとりあえず値は出力されるような気はします。
int main(void)
{
int x1, y1, x2, y2;
printf("点Aの座標を入力してください。\n");
scanf("%f%f",&x1,&y1);
printf("点Bの座標を入力してください。\n");
scanf("%f%f",&x2,&y2);
float a = x1 * y2;
float b = x2 * y1;
float c = a - b;
float s;
s = c * (1/2);
printf("三角形OABの面積は%fです。\n", s);
return 0;
}
先にa=x1*y2やb=x2*y1を定義+計算してしまっていることが原因だと思われます。
その後にコンソールからx1,x2,y1,y2の値を入力しようとしているので、順番を変えるとよいと思います。
あとdは使っていないのでいらないと思います。
なので以下のような形にすればとりあえず値は出力されるような気はします。
int main(void)
{
int x1, y1, x2, y2;
printf("点Aの座標を入力してください。\n");
scanf("%f%f",&x1,&y1);
printf("点Bの座標を入力してください。\n");
scanf("%f%f",&x2,&y2);
float a = x1 * y2;
float b = x2 * y1;
float c = a - b;
float s;
s = c * (1/2);
printf("三角形OABの面積は%fです。\n", s);
return 0;
}
Re: 原点をOとするx-y平面内の点A(x1,y1)と点B(x2,y2)の座標をキーボードから入力し、三角形OABの面
こんな感じ?
データ入力→計算→結果出力の順に行ないましょう。
どんな値が入っているかわからない数値を用いて計算した後に当該の計算で用いる値を入力するのは手順が逆です。
データ入力→計算→結果出力の順に行ないましょう。
どんな値が入っているかわからない数値を用いて計算した後に当該の計算で用いる値を入力するのは手順が逆です。
#include <stdio.h>
typedef struct {
double x;
double y;
} POINT;
void input(POINT *a, POINT *b)
{
printf("点Aの座標を入力:"), scanf("%lf%lf", &(a->x), &(a->y));
printf("点Bの座標を入力:"), scanf("%lf%lf", &(b->x), &(b->y));
}
double area(POINT a, POINT b)
{
double d = (a.x * b.y - a.y * b.x) / 2;
return d > 0 ? d : -d;
}
int main(void)
{
POINT a, b;
input(&a, &b);
printf("三角形の面積は、%f\n", area(a, b));
return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。