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

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

新規登録して質問してみよう
ただいま回答率
85.35%
標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Q&A

解決済

1回答

732閲覧

特定のコードを消すと出力が上手くいかない

pine_hisa

総合スコア5

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

0グッド

0クリップ

投稿2020/03/16 18:11

前提・実現したいこと

AtCoderのABC081,B問題を解いています。
内容を要約すると、与えられたN個の整数に対し「全て偶数なら2で割る」という操作が何回行えるかを出力する、というものです。

入力は
N ←(整数の個数)
A1, A2, … AN ←(与えられる整数)
で与えられています。

発生している問題・エラーメッセージ

以下のコードであれば正しく出力値を得られるのですが、途中のfor分などでの数値の変化を確認するために入れていた(※)の行を削除すると、どんな入力値に対しても出力値が0となってしまいました。

該当のソースコード

C++

1#include <bits/stdc++.h> 2using namespace std; 3 4int main(){ 5 int n, count, ans; 6 cin >> n; 7 8 vector<int> a(n); 9 for(int i = 0; i < n; i++){ 10 cin >> a.at(i); 11 } 12 13 for(int i = 0; i < n; i++){ 14 if((a.at(i)%2) == 0){ 15 count++; 16 } 17 if(n == count){ 18 for(int i = 0; i < n; i++){ 19 a.at(i) = (a.at(i)) / 2; 20 cout << a.at(i) << endl; //(※) 21 } 22 ans++; 23 count = 0; 24 i = -1; 25 continue; 26 } 27 } 28 29 cout << ans << endl; 30}

試したこと

変数名を変更するなどしてみましたが、特に改善は見られませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

コメントのついてる行とは関係なく、countとansが初期化されずに使われてることが原因でしょう

投稿2020/03/16 18:32

yudedako67

総合スコア2047

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

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

pine_hisa

2020/03/16 18:37

なるほど、大変初歩的なミスでした。 仰る通りに初期化したところ計画通りに挙動しました。 回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問