按要求,給國家進行排名。
有多組資料。
第一行給出國家數n,要求排名的國家數m,國家號從0到n-1。
第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數(百萬)。
接下來一行給出m個國家號。
排序有4種方式: 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例
對每個國家給出最佳排名排名方式 和 最終排名
格式為: 排名:排名方式
如果有相同的最終排名,則輸出排名方式最小的那種排名,對於排名方式,金牌總數 < 獎牌總數 < 金牌人口比例 < 獎牌人口比例
如果有並列排名的情況,即如果出現金牌總數為 100,90,90,80.則排名為1,2,2,4.、
每組資料後加乙個空行。
4 4
4 8 1
6 6 2
4 8 2
2 12 4
0 1 2 3
4 28 10 1
8 11 2
8 12 3
8 13 4
0 3
1:3
1:12:1
1:21:1
1:1
本題需要解決的是奧運會中各國家最有利的排名方式以及名次。只要進行五次排序即可。
首先讀入各國家資訊,寫好國家編號,計算和儲存排名所需要的資料。
然後按四種排名方式分別對需要排名的國家進行排名,並記錄名次。最後使用國家編號對國家進行排名。
這樣就可以輸出結果了。
其實剛看到這種題對我這種小白真的無從下手,上學期學習c++的時候老師並沒有講結構體(因為沒有課時了,所以直接跳到了類),第一次接觸結構體也是在資料結構裡老師問你們有沒有學過結構體開始的,可能有人很懂,我反正是一臉懵逼。能怎麼辦啊,作業也要交,不交沒平時分,只能趕鴨子上架。一杯奶茶,一包雪餅,一道題目寫一天。其實這道題相當於將每個國家的一些屬性嵌在了結構體中,就比如題中的金牌數,獎牌數,排名啊之類的,然後像類的引用一樣拿出來取就可以了。
思路在於將每個國家的屬性資料都弄好了之後,從第乙個國家開始,按照題中要求的國家號,拿出來再與其他的乙個乙個國家之間進行比較,最後確定排名寫到r1,r2,r3,r4中,弄好了之後也是差不多的思路,在排名之間進行比較,挑選乙個最好的排名在顯示結果,最後在比較的時候記錄一下你是因何而獲獎就可以輸出了。
有一些點是要注意float型別
以下**在devc++裡執行的蠻不錯,oj也很配合我通過了
啊,終於不用改了d*****( ̄▽ ̄*)b
#include
using
namespace std;
struct country
;//gmedal為金牌數,medal為獎牌數,p為人口數,gmedalp為金牌人口比,medalp為獎牌人口比,r1,r2,r3,r4該國家各項排名
intmain()
int country_number[m]
;for
(int i=
0;i)for
(int i=
0;i)//金牌排名
}for
(int i=
0;i)//獎牌排名 }}
for(
int i=
0;i)//金牌人口比排名 }}
for(
int i=
0;i)//獎牌人口比排名 }}
int final[n]
,kind[n]
;//final陣列記錄某國最終排名,kind陣列記錄獲獎的種類
for(
int i=
0;i)else
if(final[i]
>country[i]
.r3)
else
if(final[i]
>country[i]
.r4)
}for
(int i=
0;i) cout<}return0;
}
《資料結構》 實驗1 2
資料結構 實驗一 vc程式設計工具的靈活使用 一 實驗目的 複習鞏固vc程式設計環境的使用,以及c 模板設計。1.回顧並掌握vc單檔案結構程式設計過程。2.回顧並掌握vc多檔案工程設計過程 3.掌握vc程式除錯過程。4.回顧c 模板和模板的程式設計。二 實驗內容 2.設計乙個單檔案結構程式完成從鍵盤...
《資料結構》 實驗1 2
資料結構 實驗一 vc程式設計工具的靈活使用 一 實驗目的 複習鞏固vc程式設計環境的使用,以及c 模板設計。1.回顧並掌握vc單檔案結構程式設計過程。2.回顧並掌握vc多檔案工程設計過程 3.掌握vc程式除錯過程。4.回顧c 模板和模板的程式設計。二 實驗內容 2.設計乙個單檔案結構程式完成從鍵盤...
資料結構實驗八 排序
實驗八 排序 實驗目的 掌握直接插入排序演算法 理解其演算法原理和適用情況。實驗內容 1.構建乙個陣列,包含n個待排序的資料 2.0號單元不用,用於存放監視哨 3.通過比較和移動實現資料排序,並輸出 4.估計演算法的時間複雜性。原始碼 include stdafx.h include using n...