C言語について質問です
画像のようにエラーが出てしまうのですが、どこが間違っているのか分かりません
教えていただけるとありがたいです。
※プログラミング初心者です
・構造体→point、
・関数
→input_cordinate
点の座標を構造体pointに入れる
→center_point
2点の中点を求める
<実行例>
点S
X座標:○
Y座標:○
点T
X座標:○
Y座標:○
点Sと点Tの中点は(○,○)です
ーーーーーーーーーーーーーー
#include <stdio.h>
typedef struct
{
double x;
double y;
}point;
point input_cordinate();
point center_point(point point1,point point2);
int main()
{
point cordinate;
point tyuutenn;
cordinate = input_cordinate();
tyuutenn = center_point(tyuutenn.x, tyuutenn.y);
printf("点Sと点Tの中点は(%f,%f)です",tyuutenn.x,tyuutenn.y);
}
point input_cordinate()
{
point point1,point2;
point center_point;
printf("点S\n");
printf("x座標:");
scanf("%lf",&point1.x);
printf("y座標:");
scanf("%lf",&point1.y);
printf("点T\n");
printf("x座標:");
scanf("%lf",&point2.x);
printf("y座標:");
scanf("%lf",&point2.y);
return center_point;
}
point center_point(point point1,point point2)
{
point tyuutenn;
tyuutenn.x = (point1.x + point2.x)/2;
tyuutenn.y = (point1.y + point2.y)/2;
return tyuutenn;
}
No.5ベストアンサー
- 回答日時:
> 書き直すとしたら、どのように書き直せば良いのか分からないので、教えていただけるとありがたいです
それはおかしいんですけどね。
#3と自分の書いたコードを見比べて「どうすれば良いのか」方針くらい付けられないといけない。
少なくとも、各関数の「計算目的」はハッキリせなアカン、ってのは他の人も言ってる通りです。
関数を書く際には「何をやりたいのか」「何をやらせたいのか」明確になってないといけないんだけど、その明確さがない。
今書いて見せてるプログラムを書き直す、っつったって、その方針がハッキリしてない限り「良いプログラム」にはなりません。
> 条件として
>・プロトタイプ宣言をする
プロトタイプ宣言は別に条件、って言うほど条件にはなりませんよ。
単にmain関数をどこに書くとか、関数同士の呼び合いがどうなるのか、制御させる程度の意味しかありません。
貴方の書いたプログラムをただ単に「エラーが出ない」ようにする程度だったら次程度の書き換えで充分です。「良いプログラムかどうか」ってのは置いておきますがね。
/* ここから */
#include <stdio.h>
typedef struct
{
double x;
double y;
} point;
point input_coordinate(void); /* 無引数の場合、引数には void を指定 */
point center_point(point point1, point point2);
int main()
{
point coordinate; /* 皆言ってるけど、座標のスペルは *Coordinate* */
// point center_point; 以下の関数定義より必要ない。
coordinate = input_coordinate();
// tyuutenn = center_point(tyuutenn.x, tyuutenn.y); 以下の関数定義より必要ない
printf("点Sと点Tの中点は(%f,%f)です",coordinate.x,coordinate.y);
}
point input_coordinate(void) /* 無引数の場合、引数には void を指定 */
{
point point1,point2;
// point center_point; これは要らんだろ。
printf("点S\n");
printf("x座標:");
scanf("%lf",&point1.x);
printf("y座標:");
scanf("%lf",&point1.y);
printf("点T\n");
printf("x座標:");
scanf("%lf",&point2.x);
printf("y座標:");
scanf("%lf",&point2.y);
return center_point(point1, point2); /* ここでcenter_point呼び出したいの? */
}
point center_point(point point1, point point2)
{
point tyuutenn;
tyuutenn.x = (point1.x + point2.x)/2;
tyuutenn.y = (point1.y + point2.y)/2;
return tyuutenn;
}
/* ここまで */
No.4
- 回答日時:
なんか、メチャクチャだけど
①input_cordinate()は2点の座標を入力してるけど
それを捨てて未初期化の座標を返してる。メチャクチャ
②center_pointの実装は正しいが、入力は2つの座標(point)なのに
tyuutenn = center_point(tyuutenn.x, tyuutenn.y);
では未初期化の座標 tyuutennのxとyを渡している。
もうメチャメチャ、グチャグチャです。
ついでに、座標つづりは coordinateです。
書き直すとしたら、どのように書き直せば良いのか分からないので、教えていただけるとありがたいです
追記し忘れてしまったのですが、
条件として
・プロトタイプ宣言をする
・input_cordinate
点の座標を入力させて構造体に格納する関数
引数は
なし
戻り値
点の座標<構造体>
・center_point
2点の中点の座標を求める関数
引数は
1つ目の点の座標<構造体>
2つ目の点の座標<構造体>
戻り値
2点の中点の座標<構造体>
No.3
- 回答日時:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
double x;
double y;
} point_t;
point_t input_coordinate(double x, double y) {
point_t p = {x, y};
return p;
}
point_t center_point(point_t point1, point_t point2) {
point_t p = {(point1.x + point2.x)/2, (point1.y + point2.y)/2};
return p;
}
int main(void) {
char s[10], *names0 = "ST", *names1 = "XY";
double num[2];
point_t points[2], chuutenn;
for (int i = 0; i < 2; i++) {
printf("点%c\n", names0[i]);
for (int j = 0; j < 2; j++) {
printf("%c座標: ", names1[j]);
scanf("%9s%*[^\n]%*c",s);
num[j] = strtod(s,NULL);
}
points[i] = input_coordinate(num[0], num[1]);
}
chuutenn = center_point(points[0], points[1]);
printf("点Sと点Tの中点は(%lf, %lf)です\n", chuutenn.x, chuutenn.y);
return EXIT_SUCCESS;
}
書き直すとしたら、どのように書き直せば良いのか分からないので、教えていただけるとありがたいです
追記し忘れてしまったのですが、
条件として
・プロトタイプ宣言をする
・input_cordinate
点の座標を入力させて構造体に格納する関数
引数は
なし
戻り値
点の座標<構造体>
・center_point
2点の中点の座標を求める関数
引数は
1つ目の点の座標<構造体>
2つ目の点の座標<構造体>
戻り値
2点の中点の座標<構造体>
わざわざ細かく書いてくださり申し訳ありませんが、こちらの条件での書き方を改めて教えていただけるとありがたいですm(_ _)m
No.2
- 回答日時:
引数として point を要求する関数に double の値を渡すことが間違っている.
というか, それ以前にそれぞれの関数で「するべきこと」を認識できていないような気がする. あと cordinate ってなんだ.
書き直すとしたら、どのように書き直せば良いのか分からないので、教えていただけるとありがたいです
追記し忘れてしまったのですが、
条件として
・プロトタイプ宣言をする
・input_cordinate
点の座標を入力させて構造体に格納する関数
引数は
なし
戻り値
点の座標<構造体>
・center_point
2点の中点の座標を求める関数
引数は
1つ目の点の座標<構造体>
2つ目の点の座標<構造体>
戻り値
2点の中点の座標<構造体>
No.1
- 回答日時:
>tyuutenn = center_point(tyuutenn.x, tyuutenn.y);
関数center_point()の引数は二つのpoint型の値ですね。
でもこの右辺ではtyuutenn.xとtyuutenn.yというdouble型の値が引数に使われています。
吐き出されているエラーはこの点について説明しています。
まあ。そのほかにも突っ込みどころが多い。
input_cordinate()関数が何をしているのか、二つの座標の入力を受けているということはわかるが、何を出力しているのだろうか。
中点の座標か?そんな計算しているそぶりもない。
戻り値となるcenter_pointに何か値を代入しているでもない。何をやっているのだろうか?
書き直すとしたら、どのように書き直せば良いのか分からないので、教えていただけるとありがたいです
追記し忘れてしまったのですが、
条件として
・プロトタイプ宣言をする
・input_cordinate
点の座標を入力させて構造体に格納する関数
引数は
なし
戻り値
点の座標<構造体>
・center_point
2点の中点の座標を求める関数
引数は
1つ目の点の座標<構造体>
2つ目の点の座標<構造体>
戻り値
2点の中点の座標<構造体>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- Excel(エクセル) RANK.EQとCOUNTIFSの組み合わせで同ポイントの場合、違う条件を加えて順位を付けたい。 1 2022/08/30 19:49
- 英語 "by a ~ 0.5 percentage point"が単数となる理由等について 2 2023/05/11 10:41
- その他(プログラミング・Web制作) Pythonでのアニメーション 1 2023/06/01 15:58
- スーパー・コンビニ イオンカードで、レジでWAON POINTを使って支払いたい時、電子マネーWAONカードのように機械 1 2023/03/12 05:44
- ポイントサービス・マイル docomoポイントについてです。 今まで9000pointあったのが いきなり120pointにな 6 2022/07/01 10:59
- ポイントサービス・マイル WAON POINTと、WAONポイントは、違うのですか。 2 2023/07/07 20:50
- ポイントサービス・マイル マイナンバーPOINTについて 1 2022/12/24 08:20
- 英語 英語の関係代名詞の問題について Monday is the day ( ) we feel blue 1 2022/06/25 21:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
始点、終点の二つの座標と半径...
-
エクセルである点からの距離で...
-
画像回転について
-
Excel VBA で自在に図形を変化...
-
visualbasic でform上に正三角...
-
以下のプログラムは重心を求め...
-
y=x^2の座標をプロットするプロ...
-
OpenCvSharp4による画像判定解...
-
水素分子の体積要素
-
エクセルで回転する座標の出し方
-
オートシェイプ円弧の中心点、...
-
マインクラフト(pc版)で座標...
-
DirectXを使ってテクスチャ(画...
-
交差する2線分の交点座標の求め方
-
タッチパッドのタッチ座標取得
-
c#で直線が図形内にあるか判定
-
SetWindowOrgとSetViewportOrg...
-
直線上にある点の座標の求め方
-
ダイアログ内コントロールの位...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルで回転する座標の出し方
-
エクセルである点からの距離で...
-
3次元空間上の2つの座標から...
-
閉図形の座標の配列が右回りか...
-
ダイアログ内コントロールの位...
-
始点、終点の二つの座標と半径...
-
座標を持った平面範囲に座標を...
-
空間上の二点を結ぶ直線上に任...
-
エクセルシート上のマウスポイ...
-
多角形の内部かどうか判定する方法
-
ワード上Shapeの位置情報を統一...
-
Excel VBA で自在に図形を変化...
-
OpenCvSharp4による画像判定解...
-
C言語 配列で座標
-
シーケンサー(PLC?)で制...
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
VB6のPrinter.ScaleWidth に対...
おすすめ情報
書き直すとしたら、どのように書き直せば良いのか分からないので、教えていただけるとありがたいです
追記し忘れてしまったのですが、
条件として
・プロトタイプ宣言をする
・input_cordinate
点の座標を入力させて構造体に格納する関数
引数は
なし
戻り値
点の座標<構造体>
・center_point
2点の中点の座標を求める関数
引数は
1つ目の点の座標<構造体>
2つ目の点の座標<構造体>
戻り値
2点の中点の座標<構造体>