はじめに
AtCoderのためにC++を学習し始めた初心者。
些細なミスに取り乱され、バグを探すこと気づけば一時間。
二度と同じミスをしないために、記録
(テキストエディタはVScode(WindowsPowerShell))
if文(等価演算子)
if(n=0){ }
else{ }
正解n==0
ビルドできちゃうんだよね。if(n=0)
==if(0)
と判定されます。
(追記:g++コンパイル時にg++ -Wall
のようにオプション付けたら警告してくれました。)
vectorの標準入力
int n; cin >> n; //vectorの要素数
vector<int> a;
for(int i=0;i<n;i++){
cin >> a[i]; //vectorの標準入力
}
正解vector<int> a(n)
cin >> a[i]
この形は、vectorの定義時に要素数を定めないといけません。
要素数を指定しない場合は、a.push_back()
を使います。
for文
int a = 3; int b = 7
for(int i = a; a <= b; i++){ } // i=aからbまで
正解for(int i = a; i <= b; i++){ }
ループし続けてしまいました.....😢
出力表示、桁数
double a = 23456789.123
cout << a;
// 出力:2.34568e+007
出力結果が指数表記になっています。このままでAtcoderに提出すると、解釈してくれません。
そこで、以下のようにすることで、小数点以下の桁数を指定しつつ実数表記できます。
// printfを使った方法
printf(%.2,a);
// 出力: 23456789.12
// coutを使った方法
cout << fixed << setprecision(2) << a;
// 出力: 23456789.12
最後に
都度更新。