paizaラーニングのレベルアップ問題集「Cランクレベルアップセット」からの出典です。
paiza.jp
C++による「Cランクレベルアップメニュー 」問題集: 文字列と、それらの提出コードの解答例です。
僕が作成、提出したコードは、以下のとおりです。
・STEP: 1 整数と文字列
/* C++による「Cランクレベルアップメニュー 」問題集: 文字列 STEP: 1 整数と文字列 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; string a; cin>>n; for(int i=0;i<n;i++){ cin>>a; cout<<a.size()<<endl; } return 0; }
・STEP: 2 部分文字列
/* C++による「Cランクレベルアップメニュー 」問題集: 文字列 STEP: 2 部分文字列 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ char a; string s; cin>>a>>s; int cnt=0; for(int i=0;i<s.size();i++){ if(s[i]==a){ cnt++; } } if(cnt>0){ cout<<"YES"<<endl; }else{ cout<<"NO"<<endl; } }
・STEP: 3 数字の文字列操作(基本)
/* C++による「Cランクレベルアップメニュー 」問題集: 文字列 STEP: 3 数字の文字列操作(基本) https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int s; cin>>s; int a=s/1000,b=(s%1000)/100,c=((s%1000)%100)/10,d=((s%1000)%100)%10; int sum1=a+d; int sum2=b+c; cout<<sum1<<sum2<<endl; return 0; }
・STEP: 4 数字の文字列操作(0埋め)
/* C++による「Cランクレベルアップメニュー 」問題集: 文字列 STEP: 4 数字の文字列操作(0埋め) https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; if(n>=100){ cout<<n<<endl; }else if(10<=n && n<100){ cout<<"0"<<n<<endl; }else{ cout<<"00"<<n<<endl; } return 0; }
・STEP: 5 数字の文字列操作(時刻1)
/* C++による「Cランクレベルアップメニュー 」問題集: 文字列 STEP: 5 数字の文字列操作(時刻1) https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ char s[5]; cin>>s; for(int i=0;i<5;i++){ if((i==0 || i==3) && s[i]!='0'){ cout<<s[i]; }else if((i==0 || i==3) && s[i]=='0'){ }else if(i==2){ cout<<endl; }else{ cout<<s[i]; } } return 0; }
・STEP: 6 数字の文字列操作(時刻2)
/* C++による「Cランクレベルアップメニュー 」問題集: 文字列 STEP: 6 数字の文字列操作(時刻2) https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ char s[5]; for(int i=0;i<5;i++){ cin>>s[i]; } int min=(s[3]-48)*10+(s[4]-48); min+=30; if(min<60){ cout<<s[0]<<s[1]; cout<<":"; cout<<min; cout<<endl; }else{ min-=60; s[1]+=1; cout<<s[0]<<s[1]; cout<<":"; if(min<10){ cout<<"0"<<min; }else{ cout<<min; } cout<<endl; } return 0; }
・FINAL問題: 文字列
/* C++による「Cランクレベルアップメニュー 」問題集: 文字列 FINAL問題: 文字列 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; for(int i=0;i<n;i++){ char t[5]; int h,m; for(int j=0;j<5;j++){ cin>>t[j]; } cin>>h>>m; int ans=(t[0]-48)*10+(t[1]-48)+h; int ans1=(t[3]-48)*10+(t[4]-48)+m; if(ans1>=60){ ans1-=60; ans+=1; } if(ans>=24){ ans-=24; } if(ans<10){ cout<<"0"<<ans<<":"; }else{ cout<<ans<<":"; } if(ans1<10){ cout<<"0"<<ans1<<endl; }else{ cout<<ans1<<endl; } } return 0; }
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。