土下座しながら探索中

主に競技プログラミング

UVa 272 : TeX Quotes

問題リンク:TeX Quotes

問題概要:
複数の行からなる文字列が与えられる
その文字列中に含まれる最初の " は `` に、2回めの " は '' に変換し出力せよ

解法:
その通りにやる
int cnt = 0 みたいな変数を用意しておいて
”をみつける度に1加えていく
cnt が偶数なら `` に、奇数なら'' に変換するとよい

コード:

#include<iostream>

using namespace std;

int main()
{
  string line;
  int cnt = 0;
  while(getline(cin,line))
    {
      for(int i=0;i<line.size();i++)
	{
	  if(line[i] == '"' && !(cnt&1))
	    {
	      cout << "``";
	      cnt++;
	    }
	  else if(line[i] == '"' && (cnt&1))
	    {
	      cout << "''";
	      cnt++;
	    }
	  else cout << line[i];
	}
      cout << endl;
    }
  return 0;
}