回答編集履歴

4

追加

2020/07/31 05:52

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -115,3 +115,29 @@
115
115
 
116
116
 
117
117
  対策は、deliver型の値を渡してください。
118
+
119
+
120
+
121
+ > 今いる位置を表したい場合c->num以外にどのように表せるのかわかりません。
122
+
123
+
124
+
125
+ そもそもの問題として、`c->num` は、「今いる位置」を表したデータなのでしょうか?
126
+
127
+ 構造体の中のコメントには、「家番号」と書かれています。
128
+
129
+ 家番号を元に現在位置を割り出すシステムである、というのは設計としてはあり得ます。
130
+
131
+ しかし、肝心の呼ばれた先のspan関数の中には、渡された家番号(整数値)を元にして、今いる位置の座標を割り出すといったようなコードは何一つ書かれていません。
132
+
133
+
134
+
135
+ 「座標を含む`deliver`を渡して、それを元に距離を計算する」
136
+
137
+ 「家番号(`c->num`)を渡して、それを元に現在座標を割り出して、そこから距離を計算する」
138
+
139
+ 設計としてはどちらでも良いのですが、呼び出し元と関数側で、どちらか1つには統一する必要があります。
140
+
141
+ 現状では、双方の設計が食い違っている為にエラーとなってしまっています。
142
+
143
+ まずは、どちらの設計にするかを決めることが先です。

3

追加

2020/07/31 05:52

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -89,3 +89,29 @@
89
89
  (ついでにprintfにはJAVAみたいにオブジェクトのデータを自動的に変換して出すような機能は存在しません。
90
90
 
91
91
  表示方法は自分でフォーマット指定と各種変数にして与える必要があります。)
92
+
93
+
94
+
95
+
96
+
97
+ > double span(deliver pa, deliver pb)
98
+
99
+ に対しspan(c->num,dest)とする場合、deliver内からnumを持ってきているのですが、それではなぜダメなのでしょうか。
100
+
101
+
102
+
103
+ span関数の第一引数には、`deliver pa`というように、deliver型の変数が指定されているので、
104
+
105
+ 渡せる値も同じくdeliver型のものになります。
106
+
107
+ `c->num`は、『deliver内からnumを持ってきている』の通り、
108
+
109
+ deliver型の中に`int num;`と定義されている要素です。
110
+
111
+ つまり、`c->num`は、int型の変数になります。
112
+
113
+ deliver型を渡さないといけないところに、int型の値が渡されているため、エラーになります。
114
+
115
+
116
+
117
+ 対策は、deliver型の値を渡してください。

2

追加

2020/07/30 12:20

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -42,4 +42,50 @@
42
42
 
43
43
 
44
44
 
45
+
46
+
47
+ > エラー部分の内容の修正
48
+
49
+
50
+
45
- 型と確認みてください。
51
+ 変数の型と数の合わせてください。
52
+
53
+
54
+
55
+ > プログラム自体の考えはあっているのか教えて頂きたいです。
56
+
57
+
58
+
59
+ ```
60
+
61
+ int main(void)
62
+
63
+ {
64
+
65
+ int i;
66
+
67
+ deliver data[]= {{0,4.0,7.5,0.0,0.0,0},{1,3.0,4.5,0.0,2.3,0},{2,3.6,4.0,0.0,8.7,0},{3,7.0,2.0,0.0,6.0,0};
68
+
69
+ while(1){
70
+
71
+ printf(data[i]); /*順番を出力*/
72
+
73
+ }
74
+
75
+ return 0;
76
+
77
+ }
78
+
79
+ ```
80
+
81
+
82
+
83
+ このコードには、考え方自体が含まれていません。
84
+
85
+ mainからは何も呼ばれていませんし、謎の無限ループしかないです。
86
+
87
+
88
+
89
+ (ついでにprintfにはJAVAみたいにオブジェクトのデータを自動的に変換して出すような機能は存在しません。
90
+
91
+ 表示方法は自分でフォーマット指定と各種変数にして与える必要があります。)

1

追加

2020/07/30 12:10

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -33,3 +33,13 @@
33
33
  定義は、`double span(deliver pa,deliver pb)`で、
34
34
 
35
35
  引数は`deliver`なのに、`c->num`は、`int`で型が合いません。
36
+
37
+
38
+
39
+ `c->num=dest;`と書かれていますが、
40
+
41
+ `c->num`は`int`、`dest`は`deliver` なので型が合わず代入できません。
42
+
43
+
44
+
45
+ 型と変数名の確認をしてみてください。