Posted at

第3回オフラインリアルタイムどう書くの参考問題をC++の練習に使ってみた

More than 5 years have passed since last update.

プログラムはやはり何かを作ろうとしないと覚えられない。

ということで、オフラインリアルタイムどう書くのこの問題がC++の練習にほど良いレベルだったので書いてみました。

問題はこちら


BallCount.cpp

#include <stdio.h>

#include <iostream>
#include <cstring>

int main(){

std::string input;
char result[10];
char ch[10];
int out,strike,ball;

std::cin >> input;

int len = input.size();

for(int i = 0; i < len; i++){

strcpy(ch, input.substr(i, 1).c_str());

switch(ch[0]){

case 's':
strike++;
if(strike > 2){
strike = 0;
out++;
}
break;

case 'b':
ball++;
if(ball > 3){
strike = 0;
ball = 0;
}
break;

case 'f':
if(strike < 2){
strike++;
}
break;

case 'h':
strike = 0;
ball = 0;
break;

case 'p':
strike = 0;
ball = 0;
out++;
break;

default:
break;
}

// アウトの数をカウント
if(out > 2){
out = 0;
strike = 0;
ball = 0;
}

// 結果出力
std::cout << out;
std::cout << strike;
std::cout << ball;

if(i != len - 1){
std::cout << ",";
}
}

std::cout << "\n";

return 0;
}


実行

$ g++ -o BallCount BallCount.cpp 

$ ./BallCount
sssbbbbsbhsbppp
010,020,100,101,102,103,100,110,111,100,110,111,200,000,100