🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

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

C++

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

Q&A

解決済

3回答

7760閲覧

昨日勉強し始めたc++で思うようにうまく動かないです。なぜか教えてほしいです。

gakihiro

総合スコア7

C

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

C++

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

0グッド

1クリップ

投稿2021/03/21 09:13

1+1-1+1-1+...のように1と+か-が入力された式の計算をプログラミングをC++を使ってしてみたいのですがなぜかエラーが起きてしまいます。またこの書き方が正しいかも添削してほしいです。

error

1warning: comparison of integer expressions of different signedness

C++

1#include <bits/stdc++.h> 2using namespace std; 3 4//1+1-1+1-1+...のように1と+か-が入力された式の計算をプログラミングしたい。 5 6int main() { 7 string S; 8 cin >> S; 9 for(int i = 1;i<S.size();i+=2){ 10 char x = S.at(i); 11 if(x=='+'){ 12 cout << x ++; 13 } 14 else if(x=='-'){ 15 cout << x--; 16 } 17 cout << endl; 18 } 19}

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

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

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

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

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

guest

回答3

0

ベストアンサー

おそらく、やりたいのはこういうことかな。

  • 入力文字列の0,2,4,……文字目には1が書いてあることを前提とする
  • 入力文字列の1,3,5,……文字目の記号(+か-)に応じて計算を行なう
  • 計算を行なうたびに、現在の計算結果を表示する

ならば、計算した答えを保存する変数が必要。その初期値は1(先頭の1に対応)。
以下のコードでは変数名をanswerとしている。
また、計算を行なう前のanswerも表示したほうがわかりやすいので、そうしている。

C++

1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() 6{ 7 string line; 8 cin >> line; 9 10 int answer = 1; 11 cout << answer; 12 cout << endl; 13 14 for (int i = 1; i < line.size(); i += 2) { 15 char x = line.at(i); 16 if (x == '+') { 17 answer += 1; 18 } else if (x == '-') { 19 answer -= 1; 20 } 21 cout << answer; 22 cout << endl; 23 } 24}

投稿2021/03/21 09:47

編集2021/03/21 09:49
Daregada

総合スコア11990

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

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

gakihiro

2021/03/21 10:45

自分のやりたいことを理解してくださってありがとうございます。xに値を加えていったので変なことになってしまったんですね。
guest

0

warning: comparison of integer expressions of different signedness

エラーではありません。警告です。メッセージは正確に読みましょう。
(簡単には、そのまま検索してみるとか)

既に回答が付いていますが、他にも色々と問題があるように見えます。

1+1-1+1-1+...のように1と+か-が入力された式の計算

とはどんな結果を期待しているのでしょうか?
まず、それを明確にしましょう。

提示のコードでもそれなりに動きます。"1+1-1" とかなら、エラーも無しで動くでしょう。
ただ、それが期待するものでないのでしょうから、期待する結果の提示を。

投稿2021/03/21 09:39

pepperleaf

総合スコア6385

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

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

0

cout << x ++;

x++ はなにをしてる(つもりな)んでしょう
次のループでxは代入されるため意味がない操作です

投稿2021/03/21 09:25

y_waiwai

総合スコア88038

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問