はじめに
競プロを始めて間もない人間による学習記録。
使用言語:C++
Raiting:51。
反省
出力文字は合っているか
Yes:先頭大文字か
基本
型
型 | 説明 | サイズ | 取り得る値 |
---|---|---|---|
int | 整数 | 4バイト | -2,147,483,648 ~ 2,147,483,647 |
unsigned int | 整数 | 4バイト | 0 ~ 4,294,967,295 |
singned char | 文字 | 1バイト | -128~127 |
unsigned char | 文字 | 1バイト | 0~225 |
string | 文字列 | ||
入出力
入力
int N;
cin >> N;
出力
cout << N << endl;
for文
通常
for(/* 初期状態 */; /* 繰り返し */; /* 変化式 */){
//処理
}
範囲for文
- 配列の要素に対する処理を簡潔に書くことができる
- string型の変数に対して、1文字ずつ処理したい場合に便利
範囲for文
for (配列の要素の型 変数名 : 配列変数) {
// 各要素に対する処理
}
実装例(文字列)
vector<int> a = {1, 3, 2, 5};
for (int x : a) {
cout << x << endl;
}
出力結果
1 3 2 5
- 入力値反転
変数cに文字列Sを1文字ずつ代入していく
実装例(文字列)
string S = "10101";
for (char c : S) {
if (c == '0'){
cout << '1';
}else{
cout << '0';
}
}
cout << endl;
出力結果
01010
配列
定義
vector<型> 配列名 = {1, 2, 3, 4, 5, 6};
定義
vector<型> 配列名();
例(int)
int N;
vector<int> vec();
(デバッグ用)各要素に入ってる値を確認する
繰り返し条件と、配列名は揃える
cout << "以下確認" << endl;
for (int i = 0; i < N; i++){
cout << vec.at(i) << endl;
}
文字列
文字列の各要素取得
例
string S;
cin >> S;
/*1*/ cout << S.at(0) << endl;
/*2*/ cout << S.at(1) << endl;
/*3*/ cout << S.at(5 - 1) << endl;
/*4*/ cout << S.size() << endl;
入力
ABCDEF
結果
/*1*/ A //0番目の要素
/*2*/ B //1番目の要素
/*3*/ E //4番目の要素
/*4*/ 6 //配列の文字数
大文字と小文字の変換
ポイント
大文字から小文字:tolower()
小文字から大文字:toupper()
1文字の変更(大文字→小文字)
char C;
cin >> C;
char c = tolower(C);
cout << c << endl;
入力
A
結果
a
文字列の変更(小文字→大文字)
string S;
cin >> S;
string T = "";
for (int i = 0; i < S.size(); i++)
{
T += toupper(S[i]);
}
cout << T << endl;
入力
abcde
結果
ABCDEF
整数をアルファベットに変更
n 番目の大文字アルファベットを表す式
'A' + n - 1
n 番目の小文字アルファベットを表す式
'a' + n - 1
実装例
int n;
cin >> n;
char c = 'A' + n - 1;
cout << c << endl;
入力値
1
26
27
出力結果
A
Z
[
過去問
問題 | 番号 | 要点 |
---|---|---|
ABC292 | A | 文字列の変更(小文字→大文字) |
ABC294 | B | 整数から文字列に変更 |
ソート
- 概要
2つの値を入れ替える
関数
swap( , );
要素の入れ替え
例
vector<int> vec = {1, 2, 3, 4, 5, 6};
swap(vec[2], vec[3]);
for (int i = 0; i < vec.size(); i++){
cout << vec.at(i) << endl;
}
結果
1 2 4 3 5 6
過去問
問題 | 番号 | 要点 |
---|---|---|
ABC293 | A | 前後の文字の入れ替え |
エラー
初期化してない
内容
warning: ‘変数名’ may be used uninitialized in this function
修正例
- int score;
+ int score = 0;