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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

C++

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

Q&A

2回答

664閲覧

C++初心者です.教えてください.

Niharu

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

C++

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

0グッド

0クリップ

投稿2022/03/11 02:37

S(=1+1-1-1+1…)の結果をanswer変数を使わず,countで表示させることはできないのでしょうか.
・入力文字列の0,2,4,……文字目には1が書いてあることを前提とする
・入力文字列の1,3,5,……文字目の記号(+か-)に応じて計算を行なう

#include <bits/stdc++.h>
using namespace std;

int main() {
string S;
cin >> S;

int count=0;

for (int i = 0; i < S.size(); i++) {
if (S.at(2i+1) == '+') { count++;}
else if (S.at(2
i+1) == '-') {count--;}
}
cout << count<< endl;
}

ですが,エラーが生じてしまいます.

./Main.cpp:10:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
10 | for (int i = 0; i < S.size(); i++) {
| ~~^~~~~~~~~~

どこがおかしいのか分からないので教えてください.

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

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

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

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

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

1T2R3M4

2022/03/11 02:50

そのワーニングメッセージに書いてある通りでは。
fana

2022/03/11 04:10

> answer変数を使わず,countで表示させることはできないのでしょうか 何言ってるか全くわからないです. 少なくとも提示されたコードには answer とかいう名前の変数は無いようにみえるのだが?????
Niharu

2022/03/12 08:40

この問題の答えは,answerでコード されているのですが,countを使った別解もできるのですか
fana

2022/03/14 01:22

「別じゃない解」というのが何なのか?というのをあなたしか知らない状態で「別解ができるか?」と問うて通じると本気で思ってる? ・そもそもこのanswerがどうのいう話がこの質問の「エラーが生じてしまいます」とかいう話をすることに必要ないのであれば,それは余計な雑音でしかない.いらない話なら最初から書くべきではない. ・answerがどうのいう話が,ここでする話にとってどうしても必要な要素だというのならば,他者に伝わるようにまともに説明する必要がある. 「元ネタではこうなってるのを→こうしたい」という話ならば,元ネタの状態との対比が見える形で情報を示さねば何が差異となるのかすら読み手にはわからないであろう. (今の質問文では前者側であろうと見えるが)
guest

回答2

0

[別解] (文字列に現れる'+'の数) - (文字列に現れる'-'の数) でいいのなら:

C++

1#include <iostream> 2#include <string> 3#include <algorithm> 4 5int main() { 6 using namespace std; 7 string S = "1+1-1+1+1+1-1-1"; 8 int count = std::count(S.begin(),S.end(),'+') - std::count(S.begin(),S.end(),'-'); 9 cout << count<< endl; 10}

投稿2022/03/11 03:01

episteme

総合スコア16614

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

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

Niharu

2022/03/12 08:43

なるほど,ありがとうございます.
guest

0

それはエラーじゃなくワーニングです

google翻訳
警告:異なる符号の整数式の比較

あと、

if (S.at(2i+1) == '+') { count++;}

2i ってなんでしょう

投稿2022/03/11 03:00

y_waiwai

総合スコア87719

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

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

Niharu

2022/03/12 08:43

2*i+1 でした. S=1+1-1-1+1…の2*i+1番目,つまり符号の部分が+ならば1をカウント,-ならば―1をカウント,としたかったです.すみません
fana

2022/03/14 01:32

> 2*i+1 for (int i = 0; i < S.size(); i++) なるループでそんな場所を参照したら思いっきり範囲外となるぞ. ループ終了条件か,ループ記述自体 のどちらかを見直すべき.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問