質問編集履歴

1

誤植

2020/08/10 08:20

投稿

_._._ami
_._._ami

スコア26

test CHANGED
@@ -1 +1 @@
1
- c++ sort class メンバ関数
1
+ c++ sort ファイル
test CHANGED
@@ -1,243 +1 @@
1
- 12th.inというファイルに名前,年齢,所在地が1行ずつ書かれているのでそれを読み込んで名前順に並べ替え,名前が同じ場合は年齢順,年齢も同じなら所在地順というふうにしたいのですが, ソートの仕方が分からないです.
1
+ 名前,年齢,所在地が1行ずつ書かれているのでそれを読み込んで名前順に並べ替え,名前が同じ場合は年齢順,年齢も同じなら所在地順というふうにしたいのですが, ソートの仕方が分からないです.
2
-
3
-
4
-
5
- 一部ですが12th.inの中身はこんな感じです!↓
6
-
7
- Cynthia 115 Aichi
8
-
9
- Teresa 1 Iwate
10
-
11
- Vincent 28 Ishikawa
12
-
13
- Kimberly 99 Gifu
14
-
15
- Terry 49 Kagawa
16
-
17
- Richard 64 Yamanashi
18
-
19
- Janet 113 Kochi
20
-
21
- ...
22
-
23
-
24
-
25
- 何人分とかは分からないです.
26
-
27
-
28
-
29
- できればソート関数を使わずにクラスmArrayを完成させたいです.
30
-
31
-
32
-
33
- 下記のコードでエラーは特に出ませんが,並べ替えが理想とは全然違いもはやランダムのようになって出力されてしまいます...!
34
-
35
- 些細なところでも構わないので助けていただけると嬉しいです.
36
-
37
-
38
-
39
- ```c++
40
-
41
- #include<iostream>
42
-
43
- #include<string>
44
-
45
- #include<fstream>
46
-
47
- #include<stdexcept>
48
-
49
- using namespace std;
50
-
51
-
52
-
53
- class cPerson
54
-
55
- {
56
-
57
- string name;
58
-
59
- int age;
60
-
61
- string location;
62
-
63
-
64
-
65
- public:
66
-
67
- cPerson(string name, int age, string location){
68
-
69
- (*this).name = name;
70
-
71
- (*this).age = age;
72
-
73
- (*this).location = location;
74
-
75
- }
76
-
77
-
78
-
79
- friend istream& operator>>(istream& is, const cPerson& a);
80
-
81
- friend ostream& operator<<(ostream& os, const cPerson& b);
82
-
83
-
84
-
85
- bool operator<(cPerson c){
86
-
87
-
88
-
89
- if(name > c.name){
90
-
91
- if(age > c.age){
92
-
93
- if( location > c.location){
94
-
95
- return true;
96
-
97
- }
98
-
99
- else
100
-
101
- {
102
-
103
- return false;
104
-
105
- }
106
-
107
- }
108
-
109
- else
110
-
111
- {
112
-
113
- return false;
114
-
115
- }
116
-
117
- }
118
-
119
-
120
-
121
- else
122
-
123
- {
124
-
125
- return false;
126
-
127
- }
128
-
129
- }
130
-
131
-
132
-
133
- };
134
-
135
-
136
-
137
-
138
-
139
- ostream& operator<<(ostream& os, const cPerson& b){
140
-
141
- os << b.name << " " << b.age << " " << b.location;
142
-
143
- return os;
144
-
145
- }
146
-
147
-
148
-
149
- class mArray{
150
-
151
- string name;
152
-
153
- int age;
154
-
155
- string location;
156
-
157
-
158
-
159
- public:
160
-
161
- void sort(){
162
-
163
- string s,t;
164
-
165
- if(s<t){
166
-
167
- string x;
168
-
169
- x = s;
170
-
171
- s = t;
172
-
173
- t = x;
174
-
175
- }
176
-
177
-
178
-
179
- }
180
-
181
- };
182
-
183
-
184
-
185
-
186
-
187
-
188
-
189
- int main(){
190
-
191
- string name;
192
-
193
- int age;
194
-
195
- string location;
196
-
197
-
198
-
199
- ifstream ifs("12th.in");
200
-
201
- ofstream ofs("12th.out");
202
-
203
-
204
-
205
- if(!ifs){
206
-
207
- cerr << "Error:file not opened." << "\n";
208
-
209
- return 1;
210
-
211
- }
212
-
213
-
214
-
215
- ifs >> name >> age >> location;
216
-
217
- while(getline(ifs,name)){
218
-
219
-
220
-
221
- mArray aB;
222
-
223
- aB.sort();
224
-
225
-
226
-
227
- ofs << name << " " << age << " " << location << "\n";
228
-
229
- }
230
-
231
-
232
-
233
-
234
-
235
-
236
-
237
-
238
-
239
- return 0;
240
-
241
- }
242
-
243
- ```