質問編集履歴
1
元のソースコードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -3,39 +3,7 @@
|
|
3
3
|
csv形式でファイルから読み込んだものを重連結リストに格納する
|
4
4
|
### 前提
|
5
5
|
```ここに言語を入力
|
6
|
-
|
6
|
+
|
7
|
-
tail = append(tail, 2, "ケーン", "トットナム", 29, "イングランド", 27, 36);
|
8
|
-
tail = append(tail, 3, "トニー", "ブレントフォード", 27, "イングランド", 20, 33);
|
9
|
-
tail = append(tail, 4, "サラー", "リバプール", 30, "エジプト", 19, 36);
|
10
|
-
tail = append(tail, 5, "C・ウィルソン", "ニューカッスル", 31, "イングランド", 18, 29);
|
11
|
-
tail = append(tail, 6, "ラッシュフォード", "マンチェスターU", 25, "イングランド", 16, 33);
|
12
|
-
tail = append(tail, 7, "ウーデゴール", "アーセナル", 24, "ノルウェー", 15, 35);
|
13
|
-
tail = append(tail, 7, "マルティネリ", "アーセナル", 21, "ブラジル", 15, 36);
|
14
|
-
tail = append(tail, 9, "ワトキンス", "アストンビラ", 27, "イングランド", 14, 35);
|
15
|
-
tail = append(tail, 10, "サカ", "アーセナル", 21, "イングランド", 13, 36);
|
16
|
-
tail = append(tail, 11, "ロドリゴ", "リーズ", 32, "スペイン", 12, 29);
|
17
|
-
tail = append(tail, 11, "バーンズ", "レスター", 25, "イングランド", 12, 32);
|
18
|
-
tail = append(tail, 11, "ミトロビッチ", "フラム", 28, "セルビア", 12, 22);
|
19
|
-
tail = append(tail, 14, "アルミロン", "ニューカッスル", 29, "パラグアイ", 11, 32);
|
20
|
-
tail = append(tail, 15, "ガブリエル・ジェズス", "アーセナル", 26, "ブラジル", 10, 24);
|
21
|
-
tail = append(tail, 15, "イサク", "ニューカッスル", 23, "スウェーデン", 10, 20);
|
22
|
-
tail = append(tail, 15, "ソン・フンミン", "トットナム", 30, "韓国", 10, 34);
|
23
|
-
tail = append(tail, 15, "フォーデン", "マンチェスターC", 22, "イングランド", 10, 29);
|
24
|
-
tail = append(tail, 15, "マディソン", "レスター", 26, "イングランド", 10, 28);
|
25
|
-
tail = append(tail, 15, "マック・アリスター", "ブライトン", 24, "アルゼンチン", 10, 32);
|
26
|
-
tail = append(tail, 15, "エゼ", "クリスタルパレス", 24, "イングランド", 10, 36);
|
27
|
-
tail = append(tail, 22, "フィルミノ", "リバプール", 31, "ブラジル", 9, 23);
|
28
|
-
tail = append(tail, 22, "ヌニェス", "リバプール", 23, "ウルグアイ", 9, 29);
|
29
|
-
tail = append(tail, 24, "トロサール", "アーセナル", 28, "ベルギー", 8, 34);
|
30
|
-
tail = append(tail, 24, "アウォニイ", "ノッティンガム・フォレスト", 25, "ナイジェリア", 8, 25);
|
31
|
-
tail = append(tail, 24, "ジョンソン", "ノッティンガム・フォレスト", 21, "ウェールズ", 8, 36);
|
32
|
-
tail = append(tail, 24, "イングス", "ウエストハム", 30, "イングランド", 8, 33);
|
33
|
-
tail = append(tail, 24, "アルバレス", "マンチェスターC", 23, "アルゼンチン", 8, 28);
|
34
|
-
tail = append(tail, 24, "ギュンドアン", "マンチェスターC", 32, "ドイツ", 8, 30);
|
35
|
-
tail = append(tail, 24, "ウォード・プラウズ", "サウサンプトン", 28, "イングランド", 8, 36);
|
36
|
-
tail = append(tail, 24, "グロス", "ブライトン", 31, "ドイツ", 8, 34);
|
37
|
-
tail = append(tail, 32, "三笘", "ブライトン", 25, "日本", 7, 30);
|
38
|
-
```
|
39
7
|
この部分をファイルにしたいです。
|
40
8
|
### 発生している問題・エラーメッセージ
|
41
9
|
|
@@ -90,8 +58,10 @@
|
|
90
58
|
printf("Number: %p\n", &tmp->Number);
|
91
59
|
printf("Games: %p\n", &tmp->Games);
|
92
60
|
}
|
61
|
+
|
93
62
|
int main(void)
|
94
63
|
{
|
64
|
+
|
95
65
|
Soccercheck *dommy = (Soccercheck *)malloc(sizeof(Soccercheck)); // ダミーノード
|
96
66
|
Soccercheck *head = dommy;
|
97
67
|
Soccercheck *tail = dommy;
|
@@ -131,7 +101,196 @@
|
|
131
101
|
tail = append(tail, 24, "グロス", "ブライトン", 31, "ドイツ", 8, 34);
|
132
102
|
tail = append(tail, 32, "三笘", "ブライトン", 25, "日本", 7, 30);
|
133
103
|
|
134
|
-
|
104
|
+
int num = 0;
|
105
|
+
|
106
|
+
Soccercheck *tmp = head->next;
|
107
|
+
while (num != 8) // numが5の時終了
|
108
|
+
{
|
109
|
+
printf("\nどのような操作をしますか?\n 1:一覧表字、2:検索(名前), 3:検索(チーム名), 4:検索(国名), 5:検索(ランキング), 6:検索(年齢), 7:削除, 8:終了 ->");
|
110
|
+
scanf("%d", &num);
|
111
|
+
|
112
|
+
switch (num)
|
113
|
+
{
|
114
|
+
case 1:
|
115
|
+
{ // 一覧表字
|
116
|
+
tmp = head->next;
|
117
|
+
while (1)
|
118
|
+
{
|
119
|
+
printf("サッカープレミアリーグ得点ランキング %2d 選手名 %s チーム名 %s 年齢 %d 国籍 %s ゴール数 %2d 出場試合数 %d\n", tmp->Ranking, tmp->Name, tmp->Team, tmp->Age, tmp->Country, tmp->Number, tmp->Games);
|
120
|
+
tmp = tmp->next;
|
121
|
+
if (tmp == head)
|
122
|
+
break;
|
123
|
+
}
|
124
|
+
}
|
125
|
+
break;
|
126
|
+
|
127
|
+
case 2:
|
128
|
+
{ // 名前検索
|
129
|
+
char seek[10000];
|
130
|
+
printf("誰のことを知りたいですか?");
|
131
|
+
scanf("%s", seek);
|
132
|
+
tmp = head->next;
|
133
|
+
while (1)
|
134
|
+
{
|
135
|
+
if (strcmp(tmp->Name, seek) == 0)
|
136
|
+
{
|
137
|
+
dis(tmp);
|
138
|
+
break;
|
139
|
+
}
|
140
|
+
tmp = tmp->next;
|
141
|
+
|
142
|
+
if (tmp == head) // 該当するデータが見つからなかった時
|
143
|
+
{
|
144
|
+
printf("\n%sさんのデータは見つかりませんでした。", seek);
|
145
|
+
break;
|
146
|
+
}
|
147
|
+
}
|
148
|
+
}
|
149
|
+
break;
|
150
|
+
|
151
|
+
case 3:
|
152
|
+
{ // チーム名検索
|
153
|
+
char team[10000];
|
154
|
+
printf("どのチームのことを知りたいですか?");
|
155
|
+
scanf("%s", team);
|
156
|
+
tmp = head->next;
|
157
|
+
while (1)
|
158
|
+
{
|
159
|
+
if (strcmp(tmp->Team, team) == 0)
|
160
|
+
{
|
161
|
+
dis(tmp);
|
162
|
+
break;
|
163
|
+
}
|
164
|
+
tmp = tmp->next;
|
165
|
+
|
166
|
+
if (tmp == head) // 該当するデータが見つからなかった時
|
167
|
+
{
|
168
|
+
printf("\n%sさんのデータは見つかりませんでした。", team);
|
169
|
+
break;
|
170
|
+
}
|
171
|
+
}
|
172
|
+
}
|
173
|
+
break;
|
174
|
+
case 4:
|
175
|
+
{ // 国名検索
|
176
|
+
char cou[10000];
|
177
|
+
printf("どの国の人を知りたいですか?");
|
178
|
+
scanf("%s", cou);
|
179
|
+
tmp = head->next;
|
180
|
+
while (1)
|
181
|
+
{
|
182
|
+
if (strcmp(tmp->Country, cou) == 0)
|
183
|
+
{
|
184
|
+
dis(tmp);
|
185
|
+
break;
|
186
|
+
}
|
187
|
+
tmp = tmp->next;
|
188
|
+
|
189
|
+
if (tmp == head) // 該当するデータが見つからなかった時
|
190
|
+
{
|
191
|
+
printf("\n%sさんのデータは見つかりませんでした。", cou);
|
192
|
+
break;
|
193
|
+
}
|
194
|
+
}
|
195
|
+
}
|
196
|
+
break;
|
197
|
+
|
198
|
+
case 5:
|
199
|
+
{ // ランキング検索
|
200
|
+
int rank = 0;
|
201
|
+
printf("何位の人を知りたいですか?");
|
202
|
+
scanf("%d", &rank);
|
203
|
+
tmp = head->next;
|
204
|
+
while (1)
|
205
|
+
{
|
206
|
+
if (tmp->Ranking == rank)
|
207
|
+
{
|
208
|
+
dis(tmp);
|
209
|
+
|
210
|
+
if (tmp->next->Ranking != rank)
|
211
|
+
break;
|
212
|
+
}
|
213
|
+
tmp = tmp->next;
|
214
|
+
|
215
|
+
if (tmp == head) // 該当するデータが見つからなかった時
|
216
|
+
{
|
217
|
+
printf("\n%d位の人のデータは見つかりませんでした。", rank);
|
218
|
+
break;
|
219
|
+
}
|
220
|
+
}
|
221
|
+
}
|
222
|
+
break;
|
223
|
+
case 6:
|
224
|
+
{ // 年齢検索
|
225
|
+
int age = 0;
|
226
|
+
printf("何歳の人を知りたいですか?");
|
227
|
+
scanf("%d", &age);
|
228
|
+
tmp = head->next;
|
229
|
+
int count=0;
|
230
|
+
while (1)
|
231
|
+
{
|
232
|
+
if (tmp->Age == age)
|
233
|
+
{
|
234
|
+
dis(tmp);
|
235
|
+
count++;
|
236
|
+
}
|
237
|
+
tmp = tmp->next;
|
238
|
+
|
239
|
+
if (tmp == head) // 該当するデータが見つからなかった時
|
240
|
+
{
|
241
|
+
if (count == 0){
|
242
|
+
printf("\n%d歳の人のデータは見つかりませんでした。", age);
|
243
|
+
}
|
244
|
+
break;
|
245
|
+
}
|
246
|
+
}
|
247
|
+
}
|
248
|
+
break;
|
249
|
+
case 7:
|
250
|
+
{ // データの削除
|
251
|
+
char erase[10000];
|
252
|
+
printf("誰のデータを削除しますか?\n");
|
253
|
+
scanf("%s", erase);
|
254
|
+
printf("%sさんのデータを削除します。\n", erase);
|
255
|
+
tmp = head->next;
|
256
|
+
|
257
|
+
while (1)
|
258
|
+
{
|
259
|
+
if (strcmp(tmp->Name, erase) == 0)
|
260
|
+
{
|
261
|
+
tmp->prev->next = tmp->next;
|
262
|
+
tmp->next->prev = tmp->prev;
|
263
|
+
free(tmp);
|
264
|
+
tmp = head->next;
|
265
|
+
while (1)
|
266
|
+
{
|
267
|
+
printf("サッカープレミアリーグ得点ランキング%d, 選手名%s, チーム名%s, 年齢%d, 国籍%s ゴール数%d, 出場試合数%d\n", tmp->Ranking, tmp->Name, tmp->Team, tmp->Age, tmp->Country, tmp->Number, tmp->Games);
|
268
|
+
tmp = tmp->next;
|
269
|
+
if (tmp == head)
|
270
|
+
break;
|
271
|
+
}
|
272
|
+
break;
|
273
|
+
}
|
274
|
+
tmp = tmp->next;
|
275
|
+
|
276
|
+
if (tmp == head) // 該当するデータが見つからなかった時
|
277
|
+
{
|
278
|
+
printf("\n%sさんのデータは見つかりませんでした。", erase);
|
279
|
+
break;
|
280
|
+
}
|
281
|
+
}
|
282
|
+
}
|
283
|
+
break;
|
284
|
+
|
285
|
+
case 8:
|
286
|
+
{
|
287
|
+
printf("処理を終了します。");
|
288
|
+
}
|
289
|
+
break;
|
290
|
+
default: // 1〜7以外の数字がnumに入力された時
|
291
|
+
printf("numの値が不正です\n");
|
292
|
+
}
|
293
|
+
}
|
135
294
|
return 0;
|
136
295
|
}
|
137
296
|
|