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

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

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

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

Q&A

解決済

1回答

362閲覧

C++でrepマクロがうまくいかない

ShuyaOda

総合スコア8

C++

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

0グッド

0クリップ

投稿2024/10/02 12:02

実現したいこと

以下のようなコードをC++で書いたのですがrepマクロの部分でエラーが出ます。改善点を教えてください。
(AtCoder Beginner Contest 365、C問題です)

発生している問題・分からないこと

repマクロがうまくいっていない?

エラーメッセージ

error

1prog.cc: In function 'int main()': 2prog.cc:12:24: error: 'i' was not declared in this scope 3 12 | rep(i, n) cin >> a[i]; 4 | ^

該当のソースコード

#include <bits/stdc++.h> #include <vector> #include <algorithm> using namespace std; #define rep(i, n) for (int i = 0; i < (n); i++); using ll = long long; int main() { int n; ll m; cin >> n >> m; vector<int> a(n); rep(i,n) cin >> a[i]; auto f = [&](int x) -> bool{ ll s = 0; rep(i,n) s += min(x,a[i]); return s <= m; }; const int INF = 1001001001; if(f(INF)) cout << "infinite" << endl; else{ int ac = 0, wa = INF; while(ac+1 < wa){ int wj = (ac + wa)/2; if(f(wj)) ac = wj; else wa = wj; } cout << ac << endl; } return 0; }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

分からないままです。

補足

特になし

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

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

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

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

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

guest

回答1

0

ベストアンサー

cpp

1#define rep(i, n) for (int i = 0; i < (n); i++);

最後のセミコロンが余計です。
この場合には for の本文の部分が空という解釈でループして、ループが終わった後で cin >> a[i]; をしようとするので i のスコープから外れた状態になります。
なので 'i' was not declared in this scope (i はこのスコープで宣言されていない) というエラーになります。

投稿2024/10/02 12:16

SaitoAtsushi

総合スコア5714

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

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

ShuyaOda

2024/10/02 12:21

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問