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

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

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

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

Q&A

解決済

1回答

385閲覧

AtCoderの過去問のA問題

cunwe

総合スコア65

C++

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

0グッド

0クリップ

投稿2020/02/25 14:52

##問題文
文字列s と整数i(1≦i≦|s|) が与えられます。 sのi文字目を出力してください。
なお、|s|は文字列 sの長さを表します。

###制約
1≦|s|≦100 sは英小文字のみからなる。
1≦i≦|s|

##入力
入力は以下の形式で標準入力から与えられる。

s

i

##出力
sのi文字目を出力せよ。

という問題で自分は

#include <bits/stdc++.h> using namespace std; int main() { string s; int i; cin >> s >> i; for (i = 0;i < s;i++) { cout << s.at(i) << endl; } }

とコンパイルを試みたところ

./Main.cpp: In function ‘int main()’: ./Main.cpp:9:16: error: no match for ‘operator<’ (operand types are ‘int’ and ‘std::string {aka std::basic_string<char>}’) for (i = 0;i < s;i++) { ^ In file included from /usr/include/c++/5/utility:70:0, from /usr/include/c++/5/algorithm:60, from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:64, from ./Main.cpp:1: /usr/include/c++/5/bits/stl_pair.h:220:5: note: candidate: template<class _T1, class _T2> bool std::operator<(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&) operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) ^ /usr/include/c++/5/bits/stl_pair.h:220:5: note: template argument deduction/substitution failed: ./Main.cpp:9:18: note: mismatched types ‘const std::pair<_T1, _T2>’ and ‘int’ for (i = 0;i < s;i++) { ^ In file included from /usr/include/c++/5/bits/stl_algobase.h:67:0, from /usr/include/c++/5/algorithm:61, ...

となってしまいました。

##試したこと
cout << s.at(i) << endl;
をfor文から出してみましたが同じようなエラーが出てしまいました。エラー内容的に少しやったことがある方でしたらまたあり得ないようなプログラムを作成してると思いますが、何卒よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

まず、エラーメッセージをちゃんと読んで下さい。
最初のは、「intとstringを比較してる」って、言われています。
std::basic_string::length
//

text

1usr ~/Project/test % ./a.out 2123456 7 3Out of range! 4 5usr ~/Project/test % ./a.out 6123456 4 74 8usr ~/Project/test % cat t1.cpp 9#include <iostream> 10#include <string> 11// 12int main(void) 13{ 14 std::string s; 15 std::size_t i; 16 // 17 std::cin >> s >> i; 18 if(i > s.length( )) { 19 std::cerr << "Out of range!" << std::endl; 20 } 21 std::cout << s[i-1] << std::endl; 22 // 23 return 0; 24}

投稿2020/02/25 16:38

編集2020/02/26 01:11
cateye

総合スコア6851

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

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

cateye

2020/02/25 21:38 編集

エラーは最初から潰すのが基本です。また、“sのi文字目”と言っているので、for文は不要です。 環境 clang version 10 Linux Mint 19.3
cunwe

2020/02/26 05:21

for文を使う場面とif文を使う場面が未だに明確に使い分けられていなくて苦労していたみたいでした、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問