読者です 読者をやめる 読者になる 読者になる

プログラミング入門 4. if文

この記事は、下記プログラミング入門資料の一部です。

kenkoooo.hatenablog.com

if文

if文とは、「もしAならBをして、そうじゃないならCをする」といった感じの条件分岐をするための機能です。

もしAなら{
    Bをする
} そうじゃないなら {
    Cをする
}

というのを、

if(A){
    Bをする
} else {
    Cをする
}

こんな感じで書きます。

例えば、aに入っている数字が41かどうか教えてくれるコードを書いてみましょう。

int a;

// aに41を入れる。
a = 41;

if( a == 41 ){
   // aの中身が41の場合、「aの中身は41やで!」と出力する。(aに41を入れているので、こちらが実行されるはず)
   cout << "aの中身は41やで!" << endl;
} else {
   // aの中身が41でない場合、「aの中身は41ちゃうねんで!」と出力する。
   cout << "aの中身は41ちゃうねんで!" << endl;
}

ここで注意しなければならないのは、「a=41なら」という条件を「a==41」と書くことです。「a=41」というのは「aに41を入れる」という意味です。紛らわしいので気をつけましょう。

実際に実行してみると、aに41を入れているので、「aの中身は41やで!」と出力されるはずです。aに入れる値を変えて出力を見てみると良いと思います。

練習問題

code-festival-2014-relay.contest.atcoder.jp

練習問題の解説

難しそうに見えますが、偶数の素数は2しか存在しないので、偶数の素数は1個です。ただし、出力するのは「N以下の偶数の素数の数」なので、与えられるNが1の時だけ0になります。Nが2以上ならば、1と出力すれば良いです。

よって、作成すべきプログラムは、「Nが1ならば0と出力し、そうでない場合は1と出力する」というものになります。

#include <iostream>
using namespace std;
int main(void){
    // Here your code !
    
    //整数の入れ物Nをつくる
    int N;
    
    //Nに入力を入れる
    cin >> N;
    
    //Nが1ならば0を出力し、そうでなければ1を出力する
    if( N == 1 ) {
        cout << "0" << endl;
    } else {
        cout << "1" << endl;
    }

}

練習問題2

abc020.contest.atcoder.jp

練習問題2の解説

作るべきプログラムは「与えられた数字Qが1ならば"ABC"を出力、そうでなければ"chokudai"を出力する」というものになります。

#include <iostream>
using namespace std;
int main(void){
    // Here your code !
    
    //整数の入れ物Qをつくる
    int Q;
    
    //Qに入力を入れる
    cin >> Q;
    
    //Qが1ならば"ABC"を出力し、そうでなければ"chokudai"を出力する
    if( Q == 1 ) {
        cout << "ABC" << endl;
    } else {
        cout << "chokudai" << endl;
    }

}

練習問題3

abc006.contest.atcoder.jp

練習問題3の解説

Nの範囲が1以上9以下なので、"YES"を出力するのは、Nが3か6か9の場合のみ、つまりNが3の倍数の場合のみです。

作成すべきプログラムは「Nが3で割り切れるなら"YES"を出力、そうでないなら"NO"を出力する」というプログラムになります。

「Nが3で割り切れる」というのは「Nを3で割った余りが0になる」ということです。Nを3で割った余りは

N % 3

とすることで計算できます。例えば、Nを3で割った余りをaに入れる場合

int a;
a = N % 3;

となります。

解答例は以下の通り。

#include <iostream>
using namespace std;
int main(void){
    // Here your code !
    
    //整数の入れ物Nをつくる
    int N;
    
    //Nに入力を入れる
    cin >> N;
    
    //整数の入れ物amariを作る
    int amari;
    
    //amariにNを3で割った余りを入れる
    amari = N % 3;
    
    //amariが0ならば"YES"を出力し、そうでなければ"NO"を出力する
    if( amari == 0 ) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }

}

練習問題4

code-festival-2014-qualb.contest.atcoder.jp

練習問題4の解説

AとBが入力として与えられるので、大きい方を出力すれば良さそうです。

作成すべきプログラムは「A>BならばAを出力し、そうでなければBを出力する」となります。

#include <iostream>
using namespace std;
int main(void){
    // Here your code !
    
    //整数の入れ物Aをつくる
    int A;
    
    //整数の入れ物Bをつくる
    int B;
    
    //Aに入力を入れる
    cin >> A;
    
    //Bに入力を入れる
    cin >> B;
    
    //A>BならばAを出力し、そうでなければBを出力する
    if( A > B ) {
        cout << A << endl;
    } else {
        cout << B << endl;
    }

}

練習問題5

code-festival-2014-relay.contest.atcoder.jp

練習問題5の解説

先ほどと全く同じように考えられます。

作成すべきプログラムは「a

#include <iostream>
using namespace std;
int main(void){
    // Here your code !
    
    //整数の入れ物aをつくる
    int a;
    
    //整数の入れ物sをつくる
    int s;
    
    //aに入力を入れる
    cin >> a;
    
    //sに入力を入れる
    cin >> s;
    
    //a<sならば"Enjoy another semester..."を出力し、そうでなければ"Congratulations!"を出力する
    if( a < s ) {
        cout << "Enjoy another semester..." << endl;
    } else {
        cout << "Congratulations!" << endl;
    }

}