数学の問題から、文字列処理、日付と時刻、並行処理、暗号、ネットワークまで、多岐にわたる100の問題を集め、その解法をC++で示します。ポピュラーで古典的な数学の問題をはじめ、C++17でのファイル操作やC++20での実行時間の計測、デザインパターン、テキスト翻訳、画像から顔検出など、身近で興味のわく魅力的な問題が多数収録されています。あらゆるレベルのC++プログラマはもちろん、これからC++を始める人にとっても、C++で何ができるのか、どのように書くのかを実際に手を動かしながら学び、プログラミングスキルをレベルアップすることができます。最新のC++17対応。
Modern C++チャレンジ
―C++17プログラミング力を鍛える100問
Marius Bancila 著、黒川 利明 訳、島 敏博 技術監修
- TOPICS
- Programming , C/C++
- 発行年月日
- 2019年02月
- PRINT LENGTH
- 332
- ISBN
- 978-4-87311-869-7
- 原書
- The Modern C++ Challenge
- FORMAT
- Print PDF EPUB
目次
日本語版まえがき まえがき 1章 数学の問題 問題 問題1 3または5で割り切れる正の整数の総和 問題2 最大公約数 問題3 最小公倍数 問題4 与えられた正の整数より小さい最大の素数 問題5 セクシー素数 問題6 過剰数 問題7 友愛数 問題8 アームストロング数 問題9 素因数分解 問題10 グレイコード 問題11 ローマ数字に変換 問題12 最長コラッツ数列 問題13 πの計算 問題14 ISBNの検証 解答 解答1 3または5で割り切れる正の整数の総和 解答2 最大公約数 解答3 最小公倍数 解答4 与えられた正の整数より小さい最大の素数 解答5 セクシー素数 解答6 過剰数 解答7 友愛数 解答8 アームストロング数 解答9 素因数分解 解答10 グレイコード 解答11 ローマ数字に変換 解答12 最長コラッツ数列 解答13 πの計算 解答14 ISBNの検証 2章 言語機能 問題 問題15 IPv4データ型 問題16 範囲内のIPv4アドレスを列挙する 問題17 基本演算を備えた2次元配列を作る 問題18 任意個数の引数を取る最小値関数 問題19 任意個数の要素をコンテナに追加 問題20 コンテナのany, all, none関数 問題21 システムハンドルラッパー 問題22 さまざまな温度単位のリテラル 解答 解答15 IPv4データ型 解答16 範囲内のIPv4アドレスを列挙する 解答17 基本演算を備えた2次元配列を作る 解答18 任意個数の引数を取る最小値関数 解答19 任意個数の要素をコンテナに追加 解答20 コンテナのany, all, none関数 解答21 システムハンドルラッパー 解答22 さまざまな温度単位のリテラル 3章 文字列と正規表現 問題 問題23 バイナリから文字列への変換 問題24 文字列からバイナリへの変換 問題25 英文タイトルのキャピタライズ 問題26 指定した区切り文字で文字列を連結する 問題27 区切り文字集合で文字列をトークンに分割する 問題28 最長回文部分文字列 問題29 ナンバープレートの検証 問題30 URLパーツの抽出 問題31 文字列の日付を変換する 解答 解答23 バイナリから文字列への変換 解答24 文字列からバイナリへの変換 解答25 英文タイトルのキャピタライズ 解答26 指定した区切り文字で文字列を連結する 解答27 区切り文字集合で文字列をトークンに分割する 解答28 最長回文部分文字列 解答29 ナンバープレートの検証 解答30 URLパーツの抽出 解答31 文字列の日付を変換する 4章 ストリームとファイルシステム 問題 問題32 パスカルの三角形 問題33 プロセスのリストを表形式で出力する 問題34 テキストファイルから空行を取り除く 問題35 ディレクトリのサイズを計算する 問題36 指定日付より古いファイルを削除する 問題37 ディレクトリ内で正規表現にマッチするファイルを見つける 問題38 一時ログファイル 解答 解答32 パスカルの三角形 解答33 プロセスのリストを表形式で出力する 解答34 テキストファイルから空行を取り除く 解答35 ディレクトリのサイズを計算する 解答36 指定日付より古いファイルを削除する 解答37 ディレクトリ内で正規表現にマッチするファイルを見つける 解答38 一時ログファイル 5章 日付と時間 問題 問題39 実行時間を測定する関数 問題40 2つの日付間の日数 問題41 曜日 問題42 年間の日と週 問題43 複数のタイムゾーンにおける打ち合わせ時刻 問題44 月間カレンダー 解答 解答39 実行時間を測定する関数 解答40 2つの日付間の日数 解答41 曜日 解答42 年間の日と週 解答43 複数のタイムゾーンにおける打ち合わせ時刻 解答44 月間カレンダー 6章 アルゴリズムとデータ構造 問題 問題45 優先度付きキュー 問題46 リングバッファ 問題47 ダブルバッファ 問題48 要素列の最頻出要素 問題49 テキストヒストグラム 問題50 電話番号のリストをフィルタリング 問題51 電話番号のリストの変換 問題52 文字列の文字の順列を生成 問題53 映画の平均評価 問題54 ペア作成アルゴリズム 問題55 Zipアルゴリズム 問題56 選択アルゴリズム 問題57 ソートアルゴリズム 問題58 ノード間の最短経路 問題59 イタチプログラム 問題60 ライフゲーム 解答 解答45 優先度付きキュー 解答46 リングバッファ 解答47 ダブルバッファ 解答48 要素列の最頻出要素 解答49 テキストヒストグラム 解答50 電話番号のリストをフィルタリング 解答51 電話番号のリストの変換 解答52 文字列の文字の順列を生成 解答53 映画の平均評価 解答54 ペア作成アルゴリズム 解答55 Zipアルゴリズム 解答56 選択アルゴリズム 解答57 ソートアルゴリズム 解答58 ノード間の最短経路 解答59 イタチプログラム 解答60 ライフゲーム 7章 並行処理 問題 問題61 並列変換アルゴリズム 問題62 スレッドを用いた、最小最大要素を求める並列アルゴリズム 問題63 非同期関数を用いた、最小最大要素を求める並列アルゴリズム 問題64 並列ソートアルゴリズム 問題65 コンソールへのスレッドセーフなロギング出力 問題66 カスタマーサービスシステム 解答 解答61 並列変換アルゴリズム 解答62 スレッドを用いた、最小最大要素を求める並列アルゴリズム 解答63 非同期関数を用いた、最小最大要素を求める並列アルゴリズム 解答64 並列ソートアルゴリズム 解答65 コンソールへのスレッドセーフなロギング出力 解答66 カスタマーサービスシステム 8章 デザインパターン 問題 問題67 パスワードの検証 問題68 ランダムなパスワード生成 問題69 社会保障番号の生成 問題70 承認システム 問題71 観察可能なベクトルコンテナ 問題72 値引きした価格を計算 解答 解答67 パスワードの検証 解答68 ランダムなパスワード生成 解答69 社会保障番号の生成 解答70 承認システム 解答71 観察可能なベクトルコンテナ 解答72 値引きした価格を計算 9章 データシリアライゼーション 問題 問題73 データをXMLにシリアライズする、XMLからデータをデシリアライズする 問題74 XPathを使ってXMLからデータを抽出する 問題75 データをJSONにシリアライズする 問題76 JSONからデータをデシリアライズする 問題77 映画のリストをPDFに出力する 問題78 画像を集めてPDFを作る 解答 解答73 データをXMLにシリアライズする、XMLからデータをデシリアライズする 解答74 XPathを使ってXMLからデータを抽出する 解答75 データをJSONにシリアライズする 解答76 JSONからデータをデシリアライズする 解答77 映画のリストをPDFに出力する 解答78 画像を集めてPDFを作る 10章 アーカイブ、画像、データベース 問題 問題79 Zipアーカイブにあるファイルを探し出す 問題80 ファイルをZipアーカイブに圧縮したり、Zipアーカイブからファイルを解凍する 問題81 パスワードを付けて、ファイルをZipアーカイブに圧縮したり、Zipアーカイブからファイルを解凍する 問題82 国旗を表すPNGを作る 問題83 認証用テキスト付きPNG画像を作る 問題84 EAN-13バーコード作成器 問題85 SQLiteデータベースから映画を読み込む 問題86 SQLiteデータベースに映画をトランザクションで挿入する 問題87 SQLiteデータベースで映画の画像を扱う 解答 解答79 Zipアーカイブにあるファイルを探し出す 解答80 ファイルをZipアーカイブに圧縮したり、Zipアーカイブからファイルを解凍する 解答81 パスワードを付けて、ファイルをZipアーカイブに圧縮したり、Zipアーカイブからファイルを解凍する 解答82 国旗を表すPNGを作る 解答83 認証用テキスト付きPNG画像を作る 解答84 EAN-13バーコード作成器 解答85 SQLiteデータベースから映画を読み込む 解答86 SQLiteデータベースに映画をトランザクションで挿入する 解答87 SQLiteデータベースで映画の画像を扱う 11章 暗号 問題 問題88 シーザー暗号 問題89 ヴィジュネル暗号 問題90 base64符号化と復号 問題91 ユーザの資格情報を検証する 問題92 ファイルのハッシュを計算する 問題93 ファイルの暗号化と復号 問題94 ファイル署名 解答 解答88 シーザー暗号 解答89 ヴィジュネル暗号 解答90 base64符号化と復号 解答91 ユーザの資格情報を検証する 解答92 ファイルのハッシュを計算する 解答93 ファイルの暗号化と復号 解答94 ファイル署名 12章 ネットワークとサービス 問題 問題95 ホストのIPアドレスを調べる 問題96 クライアント・サーバFizz-Buzz 問題97 ビットコインの交換レート 問題98 IMAPを使って電子メールを取得 問題99 テキストを任意の指定された言語に翻訳する 問題100 画像内にある顔を検出する 解答 解答95 ホストのIPアドレスを調べる 解答96 クライアント・サーバFizz-Buzz 解答97 ビットコインの交換レート 解答98 IMAPを使って電子メールを取得 解答99 テキストを任意の指定された言語に翻訳する 解答100 画像内にある顔を検出する 付録A 参考文献 A.1 論文等 A.2 ライブラリドキュメント 訳者あとがき 索引