c++の演習 #を表示する1

今、「プログラマの考え方が面白いほど身に付く本」という書籍でプログラムの組み方を勉強しています。

自分で演習を解いてみて、完成したコードと過程(下に行くほど古い過程です)をここに残していきます。

突っ込みどころがあったらどうぞ。C++でやっています。

Githubを覚えたらリンクを張る形式にしますが、とりまベタ張りで。。。)

 

演習

#を以下のように表示せよ

 ########

  ######

    ####

      ##

 

自分の解答とその過程

/*

 小問題に分割

d •#をコンソールに表示する

d •#を8個表示する

d •数字をカウントアップする

d •2-4-6-8と数字をカウントアップする

d •#を左揃えで表示する

d •#とSを表示する

d •if文で#とSを交互に表示する

d •if文で#をSで挟んで表示する

d •#を中央に揃えて一行表示する

d •#を中央に揃えて二行表示する

n •#を2-4-6-8と左揃えで表示する

n •#を2-4-6-8と中央揃えで表示する

n •数字をカウントダウンする

n •8-6-4-2と数字をカウントアップする

d •合わせる

*/

 

//#を中央に揃えて表示する

#include <iostream>

using namespace std;

 

int main(){

    for (int Num = 1; Num <= 10; Num ++) {

        for (int hashNum = 0; hashNum < 10 ; hashNum += 1) {

            if(hashNum <=1 * Num || hashNum >= 10 - 1 * Num + 1){

                cout << " " << flush;

            } else {

                cout << "#" << flush;

            }

 

        }

        cout << endl;

    }

}

 

 

 

/*

//#を中央に揃えて一行表示する

#include <iostream>

using namespace std;

 

int main(){

    for (int hashNum = 1; hashNum <= 10; hashNum++) {

 if(hashNum <=1 || hashNum >=10){

 cout << " " << flush;

 } else {

 cout << "#" << flush;

 }

    }

 

}

*/

 

/*

//if文で#をSで挟んで表示する

#include <iostream>

using namespace std;

 

int main(){

 for (int hashNum = 1; hashNum <= 8; hashNum++) {

 if(hashNum <=1 || hashNum >=8){

 cout << "S" << flush;

 } else {

 cout << "#" << flush;

 }

 }

}

*/

 

/*

//if文で#とSを交互に表示する

#include <iostream>

using namespace std;

 

int main(){

    for (int hashNum = 1; hashNum <= 8; hashNum++) {

        if(hashNum%2 == 0){

            cout << "S" << flush;

        } else {

            cout << "#" << flush;

        }

    }

}

*/

 

/*

//#とSを表示する

#include <iostream>

using namespace std;

 

int main(){

    cout << "S" << "#" << "S" << endl;

}

*/

 

 

/*

//#を左揃えで表示する

 #include <iostream>

 using namespace std;

 

 int main(){

 for (int Num = 2; Num <= 8; Num += 2) {

 for (int hashNum = 0; hashNum < Num ; hashNum++) {

 cout << '#' << flush;

 }

 cout << endl;

 }

 }

*/

 

/*

//2-4-6-8と数字をカウントアップする

#include <iostream>

using namespace std;

 

int main(){

    for (int Num = 2; Num <= 8; Num += 2) {

        cout << Num << endl;

    }

}

 */

 

/*

//数字をカウントアップする

#include <iostream>

using namespace std;

 

int main(){

    for(int Num = 1; Num <= 8; Num++){

        cout << Num<< endl;

    }

}

*/

 

/*

//#を8個表示する

#include <iostream>

using namespace std;

 

int main(){

    for(int hashNum = 0; hashNum < 8; hashNum++){

        cout << '#' << flush;

    }

}

*/

 

/*

//#をコンソールに表示する

#include <iostream>

using namespace std;

 

int main(){

    cout << '#' << endl;

}

 

*/

 

感想

なるべく問題を簡単にして少しずつ動くものを作って行く練習をしてみました。

結構分割してやってみたのですが、途中で簡単な方法に気づきました。

単順にスペースで挟んでその個数を制御するだけにしてやるだけで良かったみたいです。うーむ。。。次は問題を分割する時点で色々なやり方を検討してみよう。