質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2341閲覧

c++どこが間違ってるのか分かりません

Ray_Kadokura

総合スコア17

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/08/19 15:29

こんにちは.

いつもお世話になっております.

早速ですが,質問させていただきます.

AtCoderのbeginners selectionというところに乗っていた問題でABC049C白昼夢/Daydreamというものがありまして,これを解いてみたのですが,不正解でした.
しかし,なにがいけないのかわからないんです.何度も実行してみても問題の要求する通りのものができているとしか思えないのです.
どなたか私の間違いを見つけて教えていただければ幸いです.

問題文は以下のようになっています.

https://beta.atcoder.jp/contests/abs/tasks/arc065_a
イメージ説明

私が書いたコードはこちらになります.

C++

1 2#include <string> 3#include <iostream> 4 5using namespace std; 6 7void erase(string* s, int n){ 8 (*s).erase((*s).begin() + 0, (*s).begin() + n); 9} 10 11 12int main() 13{ 14 string strs, strt; 15 16 cout << "文字列S : "; cin >> strs; 17 18 19 20 bool answer = true; //最後の判定に使う 21 while(strs.size() != 0){ 22 23 //---最初の5文字がdreamでもeraseでもない場合---// 24 if ((strs.substr(0, 5) != "erase") && (strs.substr(0, 5) != "dream")){ 25 answer = false; 26 break; 27 } 28 29 //---最初の5文字がdreamの場合---// 30 if (strs.substr(0, 5) == "dream"){ 31 //---dreamの次にerが続く場合---// 32 if (strs.substr(5, 2) == "er"){ 33 if (strs.substr(5, 5) == "erase") 34 erase(&strs, 5); //eraseが続く場合はdreamのみ消去 35 else//if (strs.substr(5, 5) != "erase") 36 erase(&strs, 7); //erが続くがeraseではなかった場合はdreamerを消去 37 } 38 else{ 39 erase(&strs, 5); //dreamを消去 40 } 41 } 42 43 //---最初の5文字がeraseの場合---// 44 if (strs.substr(0, 5) == "erase"){ 45 //---eraseの次にrが続く場合---// 46 if (strs[5] == 'r'){ 47 erase(&strs, 6); //eraserを消去 48 } 49 //---rが続かない場合---// 50 else 51 erase(&strs, 5); //eraseを消去 52 } 53 } 54 55 if (answer) 56 cout << "YES\n"; 57 else 58 cout << "NO\n"; 59} 60

どうぞよろしくお願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

C++

1cout << "文字列S : ";

という出力がありますが、この出力は求められていないのではないでしょうか?
問題文はYESまたはNOを出力するとあります。

投稿2018/08/19 15:36

fu7mu4

総合スコア1088

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ray_Kadokura

2018/08/19 15:56

そうでした!!!!! その部分を消したら正解になりました!!!!! 何度考えてもわからなかったのでめちゃくちゃ嬉しいです!本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問