寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

C言語による紙を半分に折る回数とその厚さ

C言語による紙を半分に折る回数とその厚さのプログラムです。
Xcode上で、動作を確認しました。
紙の厚みと半分に折る回数を入力することで、その厚さ(mm、m)を求められます。
結果表示後に、もう一度計算し直す場合は継続し、そうでなければ終了します。

/*
 C言語による紙を半分に折る回数とその厚さ
 https://neguse-atama.hatenablog.com
*/
#include <stdio.h>
int main(void){
    double a,b,atusa1,atusa2;
    int tuzuki,kaisuu,L;
    do{
    printf("紙の厚みと紙を半分に折る回数を入力してください。\n");
    printf("紙の厚み:");scanf("%lf",&atusa1);
    printf("紙を半分に折る回数:");  scanf("%d",&kaisuu);
    a=b=2;
    for(L=1;L<kaisuu;L++){
        b=a*b;
    }
    atusa2=atusa1*b;
        printf("紙の厚さは%lfmm(%lfm)です。\n",atusa2,atusa2/1000);
        printf("もう一度計算しますか?・・・(0)はい (1)いいえ:");
        scanf("%d",&tuzuki);
    }while (tuzuki==0);
}

もしも紙を半分に折り続けられたら、と言う発想から考えてみました。
例えば、厚さが0.1mmの紙を折り続けると・・・
20回折ることができれば、その厚さは100mを超える高さになるでしょう。
25回折ることができれば、富士山の高さ(3776m)程にもなります。
更にコピー用紙で言うと、その厚みは0.07mmとして、43回折れば月までの距離を超えるはずです。
ただし現実には、紙を折り続けるのには限界があります。
数学としては、紙を重ねていくときの厚さは、紙の厚み x 枚数で求まりますが、半分に折っていくときの厚さは累乗になります。
つまり「重ねる」のと「折る」のでは、回数が増えれば増えるほど、その結果の差が大きくなると言えます。
そう考えると、「折る」と言う当たり前のようなことでも、不思議な気持ちになるのです。

f:id:neguse_atama:20200308190457j:plain
斜方立方八面体
ちなみに最近折り紙で制作してみた、斜方立方八面体です。