数値を辞書式ソートする問題についてです。
はじめに行数Nが与えられ、その次の行から数値2つが半角スペースで区切られて与えられます。
N
number1_1 number2_1
number1_2 number2_2
...
number1_N number2_N
number1_Nでソートして、もしnumber1_Nの数が同じであればnumber2_Nでソートせよ、という問題です。
私は以下のように記述しましたが、number2_Nのソートが機能していないようである事と、そもそもnumber1_Nとnumber2_Nの値がこれではバラバラになってしまうのにその解決法がなかなか分からないです。
#include <stdio.h>
#include <string.h>
int main(void){
char buf[1000];
int n;
int x;
int y;
int hidari[100];
int migi[100];
int t;
int t2;
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d\n", &n);
for(int i = 0; i < n; i++) {
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d %d", &x, &y);
hidari[i] = x;
migi[i] = y;
}
for(int i = 0; i < n; i++) {
for(int j = i + 1; j < n; j++) {
if(hidari[i] > hidari[j]) {
t = hidari[i];
hidari[i] = hidari[j];
hidari[j] = t;
}
else {
if(migi[i] > migi[j]) {
t2 = migi[i];
migi[i] = migi[j];
migi[j] = t2;
}
}
}
printf("%d %d\n", hidari[i], migi[i]);
}
}
左側の数字を右側と結びつけつつソートするにはどうしたら良いでしょうか…?
ご教示頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー