質問編集履歴

1

元のソースコードの変更

2023/05/31 12:48

投稿

yuma1919
yuma1919

スコア3

test CHANGED
File without changes
test CHANGED
@@ -3,39 +3,7 @@
3
3
  csv形式でファイルから読み込んだものを重連結リストに格納する
4
4
  ### 前提
5
5
  ```ここに言語を入力
6
- tail = append(tail, 1, "ハーランド", "マンチェスターC", 22, "ノルウェー", 36, 33);
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