アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2017年09月05日

《その16》 p.63 fmod関数


fmod関数(p.63)で実数の剰余を求めることができます。

(例1) 2.4 ÷ 1.5
    fmod(2.4, 1.5) で 2.4 を 1.5 で割ったときの剰余を求めることができます。
    電卓で 2.4 ÷ 1.5 を計算すると、割り切れて 商は1.6 です。
    割り切れるのなら 剰余は 0 のはずだから、fmod(2.4, 1.5) は 0 になるような気が
    してしまいますが、そうではありません。

    fmod(2.4, 1.5) は 0.9 になります。なぜだかわかりますか?
    fmod関数は、「商は整数である」 と考えているようです。
    2.4 の中に 1.5 は1つしか含まれないので、
      商は 1
      剰余は 2.4 − 1.5 × 1 を計算して 0.9
    ということになります。

(例2) 2.4 ÷ 2.5
    2.4 の中に 2.5 は含まれないので、
      商は 0
      剰余は 2.4
    です。

(例3) 3.1 ÷ 1.5
    3.1 の中に 1.5 は2つ含まれるので、
      商は 2
      剰余は 0.1
    です。


#include <cmath>
#include <iostream>
using namespace std;

int main()
{
double x;

cout << "実数値:"; cin >> x;

if (double m = fmod(x, 1.5)) {
cout << "その値は1.5で割り切れません。\n";
cout << "剰余は" << m << "です。\n";
}
else {
cout << "その値は1.5で割り切れます。\n";
}
}


c1.jpg

c1.jpg

新版 明解C 入門編 (明解シリーズ)

新品価格
¥2,916から
(2017/8/30 21:02時点)










--

《その15》 p.60 コンマ演算子,p.62 条件における宣言,p.61演習2-13


まず、p.61演習2-13 のコードを書き、そのあとで 『コンマ演算子』 と 『条件における宣言』 について考えてみます。


新版 明解C++ 入門編 p.61 演習2-13

// p061_演習2-13
#include <iostream>
using namespace std;

int main()
{
int a, b;

cout << "変数a:"; cin >> a;
cout << "変数b:"; cin >> b;

if (a < b) {
int t = a; /* ブロック内でのみ利用する変数は、
そのブロックの中で宣言する。  */

a = b;
b = t;
}
cout << "a≧bとなるようにソートしました。\n";
cout << "変数aは " << a << "です。\n";
cout << "変数bは " << b << "です。\n";
}



次に、コンマ演算子を使ってみます。どのように使うかは いろいろなやり方があるので、もっとセンスのある使い方がたくさんあると思いますが、
(`・ω・´) とりあえず・・・

新版 明解C++ 入門編 p.61 演習2-13 別解

// p061_演習2-13
#include <iostream>
using namespace std;

int main()
{
int a, b;

cout << "変数a:"; cin >> a;
cout << "変数b:"; cin >> b;

if (int t = a < b) t = a, a = b, b = t;

cout << "a≧bとなるようにソートしました。\n";
cout << "変数aは " << a << "です。\n";
cout << "変数bは " << b << "です。\n";
}


上のコードで
    if (int t = a < b) t = a, a = b, b = t;
の部分が 変更箇所です。

p.62 『条件における宣言』 に if文の ( ) の中に指定する《条件》は、単なる式だけでなく、変数の宣言であってもよい と書かれています。
上のコードの int t = a < b の部分です。

”=” より ”<” のほうが優先順位が上なので、まず a < b が評価され、true または false が決まります。次に、trueであれば 1、false であれば 0 が t に代入され、最後に "int t = a < b" 全体が t の値で評価されます。
なので、結果的に、条件 (int t = a < b) は (a < b) と同じ働きをすることになると思われます。
そのついでに、t の初期化も完了するんですね。

つまり、"int t = a < b" は、 ていねいに書くと、"int t = (a < b)" または "int t = (int)(a < b)" ということなんだと思います。

そして、 『コンマ演算子』を
t = a, a = b, b = t;
のようにして使ってみました。

新版 明解C 入門編 (明解シリーズ)

新品価格
¥2,916から
(2017/8/30 21:02時点)











--

《その14》 p.57演習2-10,演習2-11,p.59演習2-12


新版 明解C++ 入門編 p.57 演習2-10

// p057_演習2-10
#include <iostream>
using namespace std;

int main()
{
int a, b, c;
cout << "整数a:"; cin >> a;
cout << "整数b:"; cin >> b;
cout << "整数c:"; cin >> c;

int min = a;
if (b < min) min = b;
if (c < min) min = c;

cout << "最小値は " << min << "です。\n";
}



新版 明解C++ 入門編 p.57 演習2-11

// p057_演習2-11
#include <iostream>
using namespace std;

int main()
{
int a, b, c;
cout << "整数a:"; cin >> a;
cout << "整数b:"; cin >> b;
cout << "整数c:"; cin >> c;

int mid = a;
if ((b - c) * (b - a) <= 0) mid = b;
if ((c - a) * (c - b) <= 0) mid = c;

cout << "中央値は " << mid << "です。\n";
}



新版 明解C++ 入門編 p.59 演習2-12

// p059_演習2-12
#include <iostream>
using namespace std;

int main()
{
int a, b;

cout << "整数a:"; cin >> a;
cout << "整数b:"; cin >> b;

int min = a;
int max = b;
if (a > b) {
min = b;
max = a;
}

if (a == b) cout << "二つの値は同じです。\n";
else {
cout << "小さいほうの値は" << min << "です。\n";
cout << "大きいほうの値は" << max << "です。\n";
}
}

新版 明解C 入門編 (明解シリーズ)

新品価格
¥2,916から
(2017/8/30 21:02時点)









--

《その13》 p.55演習2-7,演習2-8,演習2-9


新版 明解C++ 入門編 p.55 演習2-7

// p055_演習2-7

#include <iostream>
using namespace std;

int main()
{
double p, q;
cout << "実数p:"; cin >> p;
cout << "実数q:"; cin >> q;
cout << "大きいほうの値は " << (p > q ? p : q) << "です。\n";
}



新版 明解C++ 入門編 p.55 演習2-8

// p055_演習2-8

#include <iostream>
using namespace std;

int main()
{
int a, b;
cout << "整数a:"; cin >> a;
cout << "整数b:"; cin >> b;
cout << "2数の差は " << (a > b ? a - b : b - a) << "です。\n";
}



新版 明解C++ 入門編 p.55 演習2-9

// p055_演習2-9

#include <iostream>
using namespace std;

int main()
{
int a, b;
cout << "整数a:"; cin >> a;
cout << "整数b:"; cin >> b;
int d = a > b ? a - b : b - a; // dは2数の差

cout << "それらの差は ";
d > 10 ? (cout << "11以上です。") : (cout << "10以下です");
cout << '\n';
}

新版 明解C 入門編 (明解シリーズ)

新品価格
¥2,916から
(2017/8/30 21:02時点)









--

《その12》 p.47演習2-4,演習2-5,p.53演習2-6


新版 明解C++ 入門編 p.45 演習2-4

// p047_演習2-4

#include <iostream>
using namespace std;

int main()
{
int x;
cout << "正の整数値を入力 : "; cin >> x;

if (x <= 0)
cout << "正でない値が入力されました。\n";
else if (x % 5)
cout << "その値は5で割り切れません。\n";
else
cout << "その値は5で割り切れます。\n";
}




新版 明解C++ 入門編 p.47 演習2-5

// p047_演習2-5

#include <iostream>
using namespace std;

int main()
{
int x;
cout << "正の整数値を入力 : "; cin >> x;

if (x <= 0)
cout << "正でない値が入力されました。\n";
else if (!(x % 3))
cout << "その値は3で割り切れます。\n";
else
cout << "その値を3で割った剰余は " << x % 3 << "です。\n";
}




新版 明解C++ 入門編 p.53 演習2-6

// p047_演習2-6

#include <iostream>
using namespace std;

int main()
{
int x;
cout << "点数を入力 : "; cin >> x;

if (x < 0 || x > 100)
cout << "不適切な値が入力されました。\n";
else if (x < 60)
cout << "不可\n";
else if (x < 70)
cout << "可\n";
else if (x < 80)
cout << "良\n";
else
cout << "優\n";
}

新版 明解C 入門編 (明解シリーズ)

新品価格
¥2,916から
(2017/8/30 21:02時点)











--

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


検索
<< 2017年09月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール
こうすけさんの画像
こうすけ

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


×

この広告は30日以上新しい記事の更新がないブログに表示されております。