蔵書リストを(1)ISBN-10順にソートした結果を出力した上で、(2)ページ数順にソートした結果を出力するプログラムを作成せよ。尚、蔵書リストは構造体配列を使用し処理すること。
という課題が出たのですが、(1)のISBN-10順のソートがうまくできません。
蔵書のリストはzousyo_t dataにある通りです。
また、ISBN-10のXは数字の10に相当するとのことなので、if文でXを10に変換したつもりですが、これでは駄目なのでしょうか。
あと、ページ数順にソートする方は大体できているのですが、最初の,,0,が余計に入ってしまいます。
以下、現時点でのソースコードです。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define rist 20
struct zousyo_t /* */
{
char syoseki[91]; /* 書籍名 */
char syuppansya[40]; /* 出版社名 */
int page; /* ページ数 */
char isbn[11]; /* ISBN-10 */
};
int main(void)
{
struct zousyo_t data[rist + 1] = {{"プログラミング言語C", "共立出版", 360, "4320026926"},
{"プログラミング作法", "アスキー", 355, "4756136494"},
{"リーダブルコード", "オライリージャパン", 260, "4873115655"},
{"プログラマの考え方がおもしろいほど身につく本", "アスキー・メディアワークス", 256, "4048869558"},
{"プログラマが知るべき97のこと", "オライリージャパン", 276, "4873114799"},
{"Effective C++", "丸善出版", 336,"4621066099"},
{"GitHub実践入門", "技術評論社", 304, "477416366X"},
{"コンピュータの構成と設計 第5版 上", "日経BP社", 404, "4822298426"},
{"コンピュータの構成と設計 第5版 下", "日経BP社", 400, "4822298434"},
{"レガシーコード改善ガイド", "翔泳社", 472, "4798116831"},
{"新装版 リファクタリング―既存のコードを安全に改善する", "オーム社", 480, "427405019X"},
{"プログラマの数学", "ソフトバンククリエイティブ", 248, "4797329734"},
{"新版暗号技術入門 秘密の国のアリス", "ソフトバンククリエイティブ", 432, "4797350997"},
{"暗号解読 上巻", "新潮社", 340, "410215972X"},
{"暗号解読 下巻", "新潮社", 382, "4102159738"},
{"フェルマーの最終定理", "新潮社", 495, "4102159711"},
{"「白い光」のイノベーション", "朝日新聞社", 279, "4022598905"},
{"スティーブ・ジョブズ I", "講談社", 448, "4062171260"},
{"アップルを創った怪物―もうひとりの創業者、ウォズニアック自伝", "ダイヤモンド社", 453, "447800479X"},
{"Google誕生―ガレージで生まれたサーチ・モンスター", "イースト・プレス", 472, "4872576446"}}; /* */
struct zousyo_t sort;
struct zousyo_t data2[rist + 1] = {{"プログラミング言語C", "共立出版", 360, "4320026926"},
{"プログラミング作法", "アスキー", 355, "4756136494"},
{"リーダブルコード", "オライリージャパン", 260, "4873115655"},
{"プログラマの考え方がおもしろいほど身につく本", "アスキー・メディアワークス", 256, "4048869558"},
{"プログラマが知るべき97のこと", "オライリージャパン", 276, "4873114799"},
{"Effective C++", "丸善出版", 336,"4621066099"},
{"GitHub実践入門", "技術評論社", 304, "477416366X"},
{"コンピュータの構成と設計 第5版 上", "日経BP社", 404, "4822298426"},
{"コンピュータの構成と設計 第5版 下", "日経BP社", 400, "4822298434"},
{"レガシーコード改善ガイド", "翔泳社", 472, "4798116831"},
{"新装版 リファクタリング―既存のコードを安全に改善する", "オーム社", 480, "427405019X"},
{"プログラマの数学", "ソフトバンククリエイティブ", 248, "4797329734"},
{"新版暗号技術入門 秘密の国のアリス", "ソフトバンククリエイティブ", 432, "4797350997"},
{"暗号解読 上巻", "新潮社", 340, "410215972X"},
{"暗号解読 下巻", "新潮社", 382, "4102159738"},
{"フェルマーの最終定理", "新潮社", 495, "4102159711"},
{"「白い光」のイノベーション", "朝日新聞社", 279, "4022598905"},
{"スティーブ・ジョブズ I", "講談社", 448, "4062171260"},
{"アップルを創った怪物―もうひとりの創業者、ウォズニアック自伝", "ダイヤモンド社", 453, "447800479X"},
{"Google誕生―ガレージで生まれたサーチ・モンスター", "イースト・プレス", 472, "4872576446"}}; /* */
struct zousyo_t sort2;
int i, j, k, l;
for(i = 0; i < rist; i++)
{
if(data[i].isbn[9] == 'X')
{
data[i].isbn[9] = 10;
}
for(j = rist; j > i; j--)
{
if(data[j].isbn < data[j - 1].isbn)
{
sort = data[j];
data[j] = data[j - 1];
data[j - 1] = sort; /*ここまでの3行でバブルソートを使ってISBN-10の小さい順に並べ替える */
}
}
}
for(k = 0; k < rist; k++)
{
for(l = rist; l > k; l--)
{
if(data2[l].page < data2[l - 1].page)
{
sort2 = data2[l];
data2[l] = data2[l - 1];
data2[l - 1] = sort2; /*ここまでの3行でバブルソートを使ってページ数の少ない順に並べ替える */
}
}
}
printf("---ISBN10---\n");
for(i = 0; i < rist; i++)
{
printf("%s,%s,%d,%s\n", data[i].syoseki, data[i].syuppansya, data[i].page, data[i].isbn); /* 並び替えた状態で蔵書のリストを表示 */
}
printf("\n---PAGES---\n");
for(k = 0; k < rist; k++)
{
printf("%s,%s,%d,%s\n", data2[k].syoseki, data2[k].syuppansya, data2[k].page, data2[k].isbn); /* 並び替えた状態で蔵書のリストを表示 */
}
return 0;
}
---ISBN10---
プログラミング言語C,共立出版,360,4320026926
プログラミング作法,アスキー,355,4756136494
リーダブルコード,オライリージャパン,260,4873115655
プログラマの考え方がおもしろいほど身につく本,アスキー・メディアワークス,256,4048869558
プログラマが知るべき97のこと,オライリージャパン,276,4873114799
Effective C++,丸善出版,336,4621066099
GitHub実践入門,技術評論社,304,477416366
コンピュータの構成と設計 第5版 上,日経BP社,404,4822298426
コンピュータの構成と設計 第5版 下,日経BP社,400,4822298434
レガシーコード改善ガイド,翔泳社,472,4798116831
新装版 リファクタリング―既存のコードを安全に改善する,オーム社,480,427405019
プログラマの数学,ソフトバンククリエイティブ,248,4797329734
新版暗号技術入門 秘密の国のアリス,ソフトバンククリエイティブ,432,4797350997
暗号解読 上巻,新潮社,340,410215972
暗号解読 下巻,新潮社,382,4102159738
フェルマーの最終定理,新潮社,495,4102159711
「白い光」のイノベーション,朝日新聞社,279,4022598905
スティーブ・ジョブズ I,講談社,448,4062171260
アップルを創った怪物―もうひとりの創業者、ウォズニアック自伝,ダイヤモンド社,453,447800479
Google誕生―ガレージで生まれたサーチ・モンスター,イースト・プレス,472,4872576446
---PAGES---
,,0,
プログラマの数学,ソフトバンククリエイティブ,248,4797329734
プログラマの考え方がおもしろいほど身につく本,アスキー・メディアワークス,256,4048869558
リーダブルコード,オライリージャパン,260,4873115655
プログラマが知るべき97のこと,オライリージャパン,276,4873114799
「白い光」のイノベーション,朝日新聞社,279,4022598905
GitHub実践入門,技術評論社,304,477416366X
Effective C++,丸善出版,336,4621066099
暗号解読 上巻,新潮社,340,410215972X
プログラミング作法,アスキー,355,4756136494
プログラミング言語C,共立出版,360,4320026926
暗号解読 下巻,新潮社,382,4102159738
コンピュータの構成と設計 第5版 下,日経BP社,400,4822298434
コンピュータの構成と設計 第5版 上,日経BP社,404,4822298426
新版暗号技術入門 秘密の国のアリス,ソフトバンククリエイティブ,432,4797350997
スティーブ・ジョブズ I,講談社,448,4062171260
アップルを創った怪物―もうひとりの創業者、ウォズニアック自伝,ダイヤモンド社,453,447800479X
レガシーコード改善ガイド,翔泳社,472,4798116831
Google誕生―ガレージで生まれたサーチ・モンスター,イースト・プレス,472,4872576446
新装版 リファクタリング―既存のコードを安全に改善する,オーム社,480,427405019X
続行するには何かキーを押してください . . .