🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

C++

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

Q&A

解決済

1回答

938閲覧

C++で恋するハッカソンのpaizaランクD相当問題を解いています。このコードがなぜ不正解になるのかがわかりません。

sakazumero

総合スコア1

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

C++

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

0グッド

0クリップ

投稿2023/03/24 10:47

「ポニーテール」ゲットチャレンジ!
paizaランクD相当問題
paizaランクとは?

アイドルは身体が資本ですから、健康管理には気をつけないといけませんよね。

健康診断のために視力検査のプログラムを作成しましょう。

視力検査では円の1部が欠けた「C」のような図形を表示し、欠けた部分の上下左右を答えるものです。

検査では5回中3回以上の正解ならば合格となります。

このプログラムでは5行の入力があり、各行は表示された図形の向き、回答の向きが半角スペース区切りで上下左右を U, D, L, Rとして入力されます。

合格の場合は OK 不合格の場合は NG と出力するプログラムを作成して下さい。

入力される値
入力は標準入力にて以下のフォーマットで与えられます。

d_1 e_1
d_2 e_2
d_3 e_3
d_4 e_4
d_5 e_5

入力値最終行の末尾に改行が1つ入ります。
条件
すべてのテストケースにおいて、以下の条件をみたします。

1 ≦ i ≦ 5
d_i, e_i はそれぞれ半角英字の1文字で U, D, L, R のいずれか

期待する出力
合格の場合は OK 不合格の場合は NG と出力してください。

最後は改行し、余計な文字、空行を含んではいけません。

入力例1
入力
U U
D D
L L
R R
L L

出力
OK

入力例2
入力
U D
D L
R L
D U
U U

出力
NG

解答欄

使用する言語(提出するコードの言語)
C++

#include <iostream>
using namespace std;
int main(void){
int A,B;
int num=0;
for(int i=0;i<5;i++){
cin>>A>>B;
if(A==B){
num++;}
}
if(num>=3){
cout<<"OK"<<endl;}
else{
cout<<"NG"<<endl;
}
return 0;
}

提出前動作確認

コード実行結果
コード実行結果
実行結果ステータス / Wrong Answer
提出コードのアウトプット /
NG

期待する出力 /
OK

様々な記事を漁りましたが、入門レベルの問題をc++で解いている記事が見つからなく、今回質問させていただきました。

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

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

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

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

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

Zuishin

2023/03/24 10:56

U とか D なのになんで int を選んだんですか?
Zuishin

2023/03/24 21:39

で、なんで int を選んだんですか?
guest

回答1

0

ベストアンサー

結論から言えば入力するデータが文字であるのに int で受けとろうとしているからです。

たとえば入力テキストが 123 とあった場合、これは文字コード (ACII コード) で 31 32 33 の並びになっていてストリーム読み込みの機能が意味のある文字の並びを解釈して int の形に変換しています。 では数値を構成しない文字の並びが入力された場合はどうなるのかというとフェイルビットと呼ばれる「失敗した」という意味のフラグを立てて変数への値の格納は行われません。

また、解釈に失敗したときに失敗した箇所以降の入力は消費されません。 つまり、もう一度読み取ろうとするともう一度失敗するということです。 質問の事例では入力の時点で全て失敗し、意味のある値が格納されていません。

数値を要求するのではなく文字を要求する形で記述する必要があります。

投稿2023/03/24 13:33

SaitoAtsushi

総合スコア5682

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

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

sakazumero

2023/03/24 15:21

ご回答ありがとうございました!int ではなくstringにしたところうまくいきました。事例も交えてくださってわかりやすかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問