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

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

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

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

受付中

変数の途中経過がみたい

SmaSTATION
SmaSTATION

総合スコア16

C++

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

3回答

0グッド

0クリップ

440閲覧

投稿2022/10/25 06:27

前提

下記のプログラムのmidの変数を途中経過として出力したいのですが、うまくいきません。
最初のmidの直後にprintfをするとmid=mid=mid=mid=mid=(数値)になってしまいました...

実現したいこと

ここに実現したいことを箇条書きで書いてください。
・midの途中経過が見たい

該当のソースコード

C++

1#include <iostream> 2#include <algorithm> 3#include <vector> 4using namespace std; 5 6int main() { 7 // 入力 8 int N; 9 cin >> N; 10 vector<long long> H(N), S(N); 11 for (int i = 0; i < N; i++) cin >> H[i] >> S[i]; 12 13 // 二分探索の上限値を求める 14 long long M = 0; 15 for (int i = 0; i < N; ++i) M = max(M, H[i] + S[i] * N); 16 17 printf("M=",M); 18 19 // 二分探索 20 long long left = 0, right = M; 21 while (right - left > 1) { 22 long long mid = (left + right) / 2; 23 24 // 判定する 25 bool ok = true; 26 vector<long long> t(N, 0); // 各風船を割るまでの制限時間 27 for (int i = 0; i < N; ++i) { 28 // そもそも mid が初期高度より低かったら false 29 if (mid < H[i]) ok = false; 30 else t[i] = (mid - H[i]) / S[i]; 31 } 32 // 時間制限がさし迫っている順にソート する 33 sort(t.begin(), t.end()); 34 for (int i = 0; i < N; ++i) { 35 // 時間切れ発生の場合は false 36 if (t[i] < i) ok = false; 37 } 38 if (ok) right = mid; 39 else left = mid; 40 41 } 42 43 cout << right << endl; 44}

試したこと

・最初のmidの直後に出力文
・mid直後のfor文の後に出力文。

補足情報(FW/ツールのバージョンなど)

二分探索のプログラムです。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

ozwk

2022/10/25 06:29

うまくいかなかったコードを貼ってください
kazuma-s

2022/10/25 07:47

printf("M=",M); とありますが、printf の書き方を知らないのですか?
atcoderyellow

2022/10/26 03:00

下手なプログラマーで、大変お騒がせしました。 恥ずかしい限りです。

回答3

1

最初のmidの直後にprintfをするとmid=mid=mid=mid=mid=(数値)になってしまいました...

printfの引数を書き間違えたのではないでしょうか。long longを出力するには%lldのような指定が必要です。

投稿2022/10/25 06:38

maisumakun

総合スコア141388

fanaを押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

1

投稿2022/10/25 06:30

atcoderyellow

総合スコア481

退会済みユーザー👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

2022/10/26 22:26

こちらの回答が複数のユーザーから「質問に対する回答となっていない投稿」という指摘を受けました。

回答へのコメント

atcoderyellow

2022/10/26 03:00

下手なプログラマーで、大変お騒がせしました。 恥ずかしい限りです。

0

C++ で cin を使っているんだから、printf の代わりに cout を使って、
cout << "mid=" << mid << endl; と書いてみてください。

投稿2022/10/25 17:07

kazuma-s

総合スコア8080

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C++

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