結構體排序問題

2021-08-11 19:11:42 字數 1641 閱讀 2201

一種排序問題 南洋理工學院

學習要點

用sort函式對struct型別進行排序,sort(rec, rec + m, cmp)

其中,cmp函式表示比較方法,注意,當兩個內容完全相同時,應該返回false,否則會報錯

使用sort函式和puts(「」)時,需包含標頭檔案algorithm 和 stdio

描述

現在有很多長方形,每乙個長方形都有乙個編號,這個編號可以重複;還知道這個長方形的寬和長,編號、長、寬都是整數;現在要求按照一下方式排序(預設排序規則都是從小到大);

1.按照編號從小到大排序

2.對於編號相等的長方形,按照長方形的長排序;

3.如果編號和長都相同,按照長方形的寬排序;

4.如果編號、長、寬都相同,就只保留乙個長方形用於排序,刪除多餘的長方形;最後排好序按照指定格式顯示所有的長方形;

輸入

第一行有乙個整數 n為(0, 10000),表示接下來有n組測試資料;

每一組第一行有乙個整數 m為(0, 1000),表示有m個長方形;

接下來的m行,每一行有三個數 : 第乙個數表示長方形的編號,第二個和第三個數值大的表示長,數值小的表示寬,相等說明這是乙個正方形(資料約定長寬與編號都小於10000);

輸出

順序輸出每組資料的所有符合條件的長方形的 編號 長 寬

樣例輸入

1 8

1 1 1

1 1 1

1 1 2

1 2 1

1 2 2

2 1 1

2 1 2

2 2 1

樣例輸出

1 1 1

1 2 1

1 2 2

2 1 1

2 2 1

#include 

#include

#include

using namespace std;

// struct for rectangle

struct rectangle;//

when every parameter is the same, must return false

bool cmp(rectangle a, rectangle b)

int main()

}sort(rec, rec+irectest, cmp);

//print value of rectangle

printf("%d

%d%d", rec[0].num, rec[0].length, rec[0].width);

puts("");

for (int i =1; iif(!((rec[i].num == rec[i-1].num) && (rec[i].length == rec[i-1].length) && (rec[i].width == rec[i-1].width)))}}

system("pause");

return

0;}

c list vector 結構體排序問題

結構體排序一般都用到模板 algorithm標頭檔案裡邊有排序模板 呼叫sort方法 需要對某個屬性排序的話,需要過載比較器 直接上 include include include include using namespace std typedef struct point point 按照x排...

結構體及結構體排序

1 定義的方法struct node 用strut定義乙個結構體,node是結構體的名字,可以自己瞎取。p 1000 這樣你就定義了乙個神奇的陣列!沒錯,它就是node型陣列!上面的 還在結構體的末尾定義了乙個該型的陣列,其實這個陣列不一定要有,而且也可以在主函式中定義,但是感覺上用的比較多,而且這...

結構體排序

description excel可以對一組紀錄按任意指定列排序。現請你編寫程式實現類似功能。input 測試輸入包含若干測試用例。每個測試用例的第1行包含兩個整數 n 100000 和 c,其中 n 是紀錄的條數,c 是指定排序的列號。以下有 n 行,每行包含一條學生紀錄。每條學生紀錄由學號 6位...