質問編集履歴

4

2021/12/09 01:18

投稿

kumakuma1029
kumakuma1029

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,277 +1 @@
1
- 番号、名前、学年などを記録したデータを複数管理して、データの追加と削除の処理を行いたいのですが、追加と削除の処理の仕方を教えて頂きたいです。初学者なので、コードが雑ですが許してくださるとありがたいです
1
+ 番号、名前、学年などを記録したデータを複数管理して、データの追加と削除の処理を行いたいのですが、追加と削除の処理の仕方を教えて頂きたいです。初学者なので、コードが雑ですが許してくださるとありがたいです
2
-
3
- #include<iostream>
4
-
5
- #include<cstring>
6
-
7
- #include<string>
8
-
9
- using namespace std;
10
-
11
-
12
-
13
- //構造体Data
14
-
15
- struct Data {
16
-
17
-
18
-
19
- char num;
20
-
21
- char name[20];
22
-
23
- int grade;
24
-
25
- char comment[50];
26
-
27
- struct Data* pnext;
28
-
29
- };
30
-
31
- struct Data* top, * now, * mae;
32
-
33
-
34
-
35
- char wname[20];
36
-
37
- int start = -1;//初期値
38
-
39
- int i = 0;
40
-
41
- int j = 0;
42
-
43
-
44
-
45
- void append(Data& a);
46
-
47
- void fdelete(Data& e);
48
-
49
- void out(Data& o);
50
-
51
-
52
-
53
- int main() {
54
-
55
-
56
-
57
-
58
-
59
- char com1[10] = "append";
60
-
61
- char com2[10] = "delete";
62
-
63
- char com3[10] = "out";
64
-
65
- char com4[10] = "end";
66
-
67
-
68
-
69
- string command;
70
-
71
-
72
-
73
-
74
-
75
- Data data;
76
-
77
- Data **ptr_d;
78
-
79
- ptr_d = new Data * [100];
80
-
81
- for (i = 0; i < 100; i++) {
82
-
83
- ptr_d[i] = new Data[500];
84
-
85
- }
86
-
87
- COMINPUT:
88
-
89
-
90
-
91
- std::cout << "コマンドを入力してください{append,delete,out,end}\n";
92
-
93
- std::cin >> command;
94
-
95
-
96
-
97
- //追加処理
98
-
99
- if (com1 == command) {
100
-
101
- ptr_d[start++];
102
-
103
- append(data);
104
-
105
- ptr_d[99][start] = data;
106
-
107
- }
108
-
109
-
110
-
111
- //削除処理
112
-
113
- else if (com2 == command) {
114
-
115
- ptr_d[start--];
116
-
117
- fdelete(data);
118
-
119
- ptr_d[99][start] = data;
120
-
121
- }
122
-
123
-
124
-
125
- //表示処理
126
-
127
- else if (com3 == command) {
128
-
129
- if (start == -1) {
130
-
131
- std::cout << "データが入力されていません\n";
132
-
133
- goto COMINPUT;
134
-
135
-
136
-
137
- }
138
-
139
- std::cout << "学生一覧\n";
140
-
141
- for (j = 0; j <= start; j++) {
142
-
143
- out(ptr_d[99][j]);
144
-
145
- }
146
-
147
- }
148
-
149
- //終了処理
150
-
151
- else if (com4 == command) {
152
-
153
- std::cout << "プログラムを終了します\n";
154
-
155
- for (i = 0; i < 100; i++) {
156
-
157
- delete[] ptr_d[i];
158
-
159
- return 0;
160
-
161
- }
162
-
163
- delete[] ptr_d[i];
164
-
165
-
166
-
167
- return 0;
168
-
169
- }
170
-
171
- else {
172
-
173
- std::cout << "***未定義コマンド***\n";
174
-
175
- }
176
-
177
- goto COMINPUT;
178
-
179
- }
180
-
181
-
182
-
183
- void append(Data& a) {
184
-
185
-
186
-
187
- std::cout << "学籍番号を入力してください\n";
188
-
189
- std::cin >> a.num;
190
-
191
- std::cout << "名前を入力してください\n";
192
-
193
- std::cin >> a.name;
194
-
195
-
196
-
197
- std::cout << "学年を入力してください\n";
198
-
199
- std::cin >> a.grade;
200
-
201
- std::cout << "コメントを入力してください\n";
202
-
203
- std::cin >> a.comment;
204
-
205
-
206
-
207
- }
208
-
209
- void fdelete(Data& e) {
210
-
211
- char delname[20];
212
-
213
-
214
-
215
-
216
-
217
- if (start == -1) {
218
-
219
- cout << "データが記憶されていません\n";
220
-
221
- return;
222
-
223
- }
224
-
225
-
226
-
227
- cout << "削除する名前を入力してください\n";
228
-
229
- cin >> delname;
230
-
231
- now = top;
232
-
233
- mae = top;
234
-
235
- while (now !=NULL)
236
-
237
- {
238
-
239
- if (strcmp(now->name, delname) == 0) {
240
-
241
- if (top == now) {
242
-
243
- top = now->pnext;
244
-
245
- }
246
-
247
- else {
248
-
249
- mae->pnext = now->pnext;
250
-
251
- }
252
-
253
- break;
254
-
255
- }
256
-
257
- else {
258
-
259
- mae = now;
260
-
261
- now = now->pnext;
262
-
263
- }
264
-
265
- }
266
-
267
- }
268
-
269
-
270
-
271
-
272
-
273
- void out(Data & o) {
274
-
275
-
276
-
277
- std::cout << "学籍番号" << o.num << "_氏名_" << o.name<<"_学年_"<<o.grade << "_コメント_" << o.comment << "\n";}

3

2021/12/09 01:18

投稿

kumakuma1029
kumakuma1029

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,4 @@
1
- 複数の学生を構造体を用いて、番号、名前学年などをまとめ作ろうとしていますが初学者の為コドがごちゃごちゃになっており何が良くないかがわかりません。そ為、どように書いた方が良かやどこ悪いかなどを教えて頂きたいです。機能としては、データ記録の他にタの追加削除をつけようと思ってす。
1
+ 番号、名前学年などを記録しデータ複数管理して、追加と削除処理を行いたいのです、追加と削除の処理の仕方を教えて頂きたいです。初学者なドが雑ですが許してくださるありがたす。
2
-
3
-
4
2
 
5
3
  #include<iostream>
6
4
 
@@ -266,10 +264,6 @@
266
264
 
267
265
  }
268
266
 
269
-
270
-
271
-
272
-
273
267
  }
274
268
 
275
269
 
@@ -280,4 +274,4 @@
280
274
 
281
275
 
282
276
 
283
- std::cout << "学籍番号" << o.num << "_氏名_" << o.name<<"_学年_"<<o.grade << "_コメント_" << o.comment << "\n";
277
+ std::cout << "学籍番号" << o.num << "_氏名_" << o.name<<"_学年_"<<o.grade << "_コメント_" << o.comment << "\n";}

2

2021/12/08 17:52

投稿

kumakuma1029
kumakuma1029

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,7 @@
1
1
  複数の学生を構造体を用いて、番号、名前と学年などをまとめた物を作ろうとしていますが、初学者の為コードがごちゃごちゃになっており何が良くないかがわかりません。その為、どのように書いた方が良いかやどこが悪いかなどを教えて頂きたいです。機能としては、データの記録の他に、データの追加と削除をつけようと思っています。
2
2
 
3
+
4
+
3
5
  #include<iostream>
4
6
 
5
7
  #include<cstring>

1

2021/12/08 17:43

投稿

kumakuma1029
kumakuma1029

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,49 +1,281 @@
1
- ### 提・実現したいこと
2
-
3
-
4
-
5
- ここに質問の内容を詳しく書いてください。
6
-
7
- (例)PHP(CakePHP)で●●なシステムを作っています。
8
-
9
- ■■な機能を実装中に以下のエラーメッセージが発生しました。
10
-
11
-
12
-
13
- ### 発生している問題・エラーメッセージ
14
-
15
-
16
-
17
- ```
18
-
19
- エラーメッセージ
20
-
21
- ```
22
-
23
-
24
-
25
- ### 該当のソースコード
26
-
27
-
28
-
29
- ```ここに言語名を入力
30
-
31
- ソースコード
32
-
33
- ```
34
-
35
-
36
-
37
- ### 試したこと
38
-
39
-
40
-
41
- ここに問題に対して試したことを記載してください。
42
-
43
-
44
-
45
- ### 補足情報(FW/ツールのバージョンなど)
46
-
47
-
48
-
49
- ここにより詳細な情報を記載してください。
1
+ 複数の学生を構造体を用いて、番号、名と学年などをまとめた物を作ろうとていますが、初学者の為コードがごちゃごちゃになっており何が良くないかがわかりません。その為、どのように書い方が良かやどが悪いかなどを教えて頂きたいです。機能しては、データの記録の他に、データの追加と削除をつけようと思っています。
2
+
3
+ #include<iostream>
4
+
5
+ #include<cstring>
6
+
7
+ #include<string>
8
+
9
+ using namespace std;
10
+
11
+
12
+
13
+ //構造体Data
14
+
15
+ struct Data {
16
+
17
+
18
+
19
+ char num;
20
+
21
+ char name[20];
22
+
23
+ int grade;
24
+
25
+ char comment[50];
26
+
27
+ struct Data* pnext;
28
+
29
+ };
30
+
31
+ struct Data* top, * now, * mae;
32
+
33
+
34
+
35
+ char wname[20];
36
+
37
+ int start = -1;//初期値
38
+
39
+ int i = 0;
40
+
41
+ int j = 0;
42
+
43
+
44
+
45
+ void append(Data& a);
46
+
47
+ void fdelete(Data& e);
48
+
49
+ void out(Data& o);
50
+
51
+
52
+
53
+ int main() {
54
+
55
+
56
+
57
+
58
+
59
+ char com1[10] = "append";
60
+
61
+ char com2[10] = "delete";
62
+
63
+ char com3[10] = "out";
64
+
65
+ char com4[10] = "end";
66
+
67
+
68
+
69
+ string command;
70
+
71
+
72
+
73
+
74
+
75
+ Data data;
76
+
77
+ Data **ptr_d;
78
+
79
+ ptr_d = new Data * [100];
80
+
81
+ for (i = 0; i < 100; i++) {
82
+
83
+ ptr_d[i] = new Data[500];
84
+
85
+ }
86
+
87
+ COMINPUT:
88
+
89
+
90
+
91
+ std::cout << "コマンドを入力してください{append,delete,out,end}\n";
92
+
93
+ std::cin >> command;
94
+
95
+
96
+
97
+ //追加処理
98
+
99
+ if (com1 == command) {
100
+
101
+ ptr_d[start++];
102
+
103
+ append(data);
104
+
105
+ ptr_d[99][start] = data;
106
+
107
+ }
108
+
109
+
110
+
111
+ //削除処理
112
+
113
+ else if (com2 == command) {
114
+
115
+ ptr_d[start--];
116
+
117
+ fdelete(data);
118
+
119
+ ptr_d[99][start] = data;
120
+
121
+ }
122
+
123
+
124
+
125
+ //表示処理
126
+
127
+ else if (com3 == command) {
128
+
129
+ if (start == -1) {
130
+
131
+ std::cout << "データが入力されていません\n";
132
+
133
+ goto COMINPUT;
134
+
135
+
136
+
137
+ }
138
+
139
+ std::cout << "学生一覧\n";
140
+
141
+ for (j = 0; j <= start; j++) {
142
+
143
+ out(ptr_d[99][j]);
144
+
145
+ }
146
+
147
+ }
148
+
149
+ //終了処理
150
+
151
+ else if (com4 == command) {
152
+
153
+ std::cout << "プログラムを終了します\n";
154
+
155
+ for (i = 0; i < 100; i++) {
156
+
157
+ delete[] ptr_d[i];
158
+
159
+ return 0;
160
+
161
+ }
162
+
163
+ delete[] ptr_d[i];
164
+
165
+
166
+
167
+ return 0;
168
+
169
+ }
170
+
171
+ else {
172
+
173
+ std::cout << "***未定義コマンド***\n";
174
+
175
+ }
176
+
177
+ goto COMINPUT;
178
+
179
+ }
180
+
181
+
182
+
183
+ void append(Data& a) {
184
+
185
+
186
+
187
+ std::cout << "学籍番号を入力してください\n";
188
+
189
+ std::cin >> a.num;
190
+
191
+ std::cout << "名前を入力してください\n";
192
+
193
+ std::cin >> a.name;
194
+
195
+
196
+
197
+ std::cout << "学年を入力してください\n";
198
+
199
+ std::cin >> a.grade;
200
+
201
+ std::cout << "コメントを入力してください\n";
202
+
203
+ std::cin >> a.comment;
204
+
205
+
206
+
207
+ }
208
+
209
+ void fdelete(Data& e) {
210
+
211
+ char delname[20];
212
+
213
+
214
+
215
+
216
+
217
+ if (start == -1) {
218
+
219
+ cout << "データが記憶されていません\n";
220
+
221
+ return;
222
+
223
+ }
224
+
225
+
226
+
227
+ cout << "削除する名前を入力してください\n";
228
+
229
+ cin >> delname;
230
+
231
+ now = top;
232
+
233
+ mae = top;
234
+
235
+ while (now !=NULL)
236
+
237
+ {
238
+
239
+ if (strcmp(now->name, delname) == 0) {
240
+
241
+ if (top == now) {
242
+
243
+ top = now->pnext;
244
+
245
+ }
246
+
247
+ else {
248
+
249
+ mae->pnext = now->pnext;
250
+
251
+ }
252
+
253
+ break;
254
+
255
+ }
256
+
257
+ else {
258
+
259
+ mae = now;
260
+
261
+ now = now->pnext;
262
+
263
+ }
264
+
265
+ }
266
+
267
+
268
+
269
+
270
+
271
+ }
272
+
273
+
274
+
275
+
276
+
277
+ void out(Data & o) {
278
+
279
+
280
+
281
+ std::cout << "学籍番号" << o.num << "_氏名_" << o.name<<"_学年_"<<o.grade << "_コメント_" << o.comment << "\n";