Board logo

標題: 排序 - struct [打印本頁]

作者: tonyh    時間: 2022-12-22 19:39     標題: 排序 - struct

本帖最後由 tonyh 於 2022-12-22 20:23 編輯

試自訂比較方法,對學生們的成績做遞減排序。

原始資料:
Bob    70 分
Cindy  66 分
Alice   77 分
Mary   76 分

排序後:
Alice   77 分
Mary   76 分
Bob    70 分
Cindy  66 分
  1. #include<bits/stdc++.h>
  2. using namespace std;

  3. struct student
  4. {
  5.     string name;
  6.     int score;
  7. };

  8. bool compare(student a, student b)
  9. {
  10.     return a.score>b.score;
  11. }

  12. student st[4];

  13. int main()
  14. {
  15.     st[0].name="Bob";
  16.     st[1].name="Cindy";
  17.     st[2].name="Alice";
  18.     st[3].name="Mary";
  19.     st[0].score=70;
  20.     st[1].score=66;
  21.     st[2].score=77;
  22.     st[3].score=76;

  23.     for(student s: st)
  24.         cout<<s.name<<"\t"<<s.score<<" 分"<<endl;
  25.     cout<<"-------------"<<endl;

  26.     sort(st, st+4, compare);

  27.     for(student s: st)
  28.         cout<<s.name<<"\t"<<s.score<<" 分"<<endl;
  29.     cout<<"-------------"<<endl;

  30.     return 0;
  31. }
複製代碼

作者: 黃宇綸    時間: 2022-12-22 20:23

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define int ll
  5. #define FOR(i,a,b) for(int i=a;i<b;i++)
  6. #define REP(i,n) FOR(i,0,n)
  7. #define REP1(i,n) FOR(i,1,(n)+1)
  8. #define RREP(i,n) for(int i=(n)-1;i>=0;i--)
  9. #define f first
  10. #define s second
  11. #define pb push_back
  12. #define ALL(x) x.begin(),x.end()
  13. #define SZ(x) (int)(x.size())
  14. #define SQ(x) (x)*(x)
  15. #define pii pair<int,int>
  16. #define Graph vector<vector<int>>
  17. #define IOS() cin.sync_with_stdio(0),cin.tie(0),cout.tie(0)
  18. const ll inf=(1ll<<63)-1;
  19. const int maxn=1e5+5;
  20. const ll mod=1e9+7;
  21. struct P {
  22.     string na;
  23.     int sc;
  24. };
  25. vector<P> v;
  26. bool operator<(P a,P b) {
  27.     return a.sc<b.sc;
  28. }
  29. signed main()
  30. {
  31.     IOS();
  32.     v.pb({"Bob",70});
  33.     v.pb({"Cindy",66});
  34.     v.pb({"Alice",77});
  35.     v.pb({"Mary",76});
  36.     for(auto p:v) cout<<p.na<<" "<<p.sc<<" 分\n"; cout<<"\n";
  37.     sort(ALL(v));
  38.     cout<<"排序後:\n";
  39.     for(auto p:v) cout<<p.na<<" "<<p.sc<<" 分\n"; cout<<"\n";
  40.     return 0;
  41. }
複製代碼

作者: 李沛昂    時間: 2022-12-22 20:25

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct student
  4. {
  5.     string name;
  6.     int score;
  7. };
  8. bool compare(student a, student b)
  9. {
  10.     return a.score>b.score;
  11. }
  12. student st[4];
  13. int main()
  14. {
  15.     st[0].name="Bob";
  16.     st[1].name="Cindy";
  17.     st[2].name="Alice";
  18.     st[3].name="Mary";
  19.     st[0].score=70;
  20.     st[1].score=66;
  21.     st[2].score=77;
  22.     st[3].score=76;
  23.     for(student s: st)
  24.         cout<<s.name<<"\t"<<s.score<<" 分"<<endl;
  25.     cout<<"-------------"<<endl;
  26.     sort(st, st+4, compare);
  27.     for(student s: st)
  28.         cout<<s.name<<"\t"<<s.score<<" 分"<<endl;
  29.     cout<<"-------------"<<endl;
  30.     return 0;
  31. }
複製代碼

作者: 黃宥華    時間: 2022-12-22 20:26

  1. #include<bits/stdc++.h>
  2. using namespace std;

  3. struct student{
  4.     string name;
  5.     int score;
  6. };
  7. bool compare(student a,student b){
  8.     return a.score>b.score;
  9. }
  10. student st[4];
  11. void show(){
  12.    for(student s:st){
  13.         cout<<s.name<<" "<<s.score<<"分"<<endl;
  14.    }
  15.    cout<<endl;
  16. }
  17. int main()
  18. {
  19.     cin.tie(0);
  20.     cin.sync_with_stdio(0);
  21.     st[0].name="Bob";
  22.     st[0].score=70;
  23.     st[1].name="Cindy";
  24.     st[1].score=66;
  25.     st[2].name="Alice";
  26.     st[2].score=77;
  27.     st[3].name="Mary";
  28.     st[3].score=76;
  29.     show();
  30.     sort(st,st+4,compare);
  31.     show();
  32.     return 0;
  33. }
複製代碼

作者: 黃宇瑄    時間: 2022-12-22 20:27

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct student
  4. {
  5.     string name;
  6.     int score;
  7. };
  8. bool compare(student a, student b)
  9. {
  10.     return a.score>b.score;
  11. }
  12. student st[4];
  13. int main()
  14. {
  15.     st[0].name="Bob";
  16.     st[1].name="Cindy";
  17.     st[2].name="Alice";
  18.     st[3].name="Mary";
  19.     st[0].score=70;
  20.     st[1].score=66;
  21.     st[2].score=77;
  22.     st[3].score=76;
  23.     for(student s: st)
  24.         cout<<s.name<<"\t"<<s.score<<" 分"<<endl;
  25.     sort(st, st+4, compare);
  26.     for(student s: st)
  27.         cout<<s.name<<"\t"<<s.score<<" 分"<<endl;
  28.     return 0;
  29. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2