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

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

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

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

Q&A

解決済

3回答

3745閲覧

「代入の左オペランドとして左辺値が必要」というエラーを解決したい

退会済みユーザー

退会済みユーザー

総合スコア0

C++

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

0グッド

0クリップ

投稿2022/04/29 06:41

編集2022/04/29 14:22

キーボードの入力より「野菜の名前」、「野菜の値段」「消費税込みの値段」を半角スペース区切りで表示するようなプログラムを作成したいと考えています。今のところ「野菜の名前」、「野菜の値段」を表示する処理は書けたのですが、「消費税込みの値段」を表示する処理が書けていません。

C++

1#include <cmath> 2#include <iostream> 3#define number_of_vegetable 4 4 5class Vegetable { 6 private: 7 std::string name; 8 int price; 9 10 public: 11 void putname(std::string s) { 12 name = s; 13 } 14 15 public: 16 std::string getname() { 17 return name; 18 } 19 20 public: 21 void putprice(int n) { 22 price = n; 23 } 24 25 public: 26 int getprice() { 27 return price; 28 } 29 30 public: 31 void getpricewithtax(int m) { 32 std::round(price*1.1) = m; 33 } 34 35 public: 36 int getpricewithtax() { 37 return std::round(price*1.1); 38 } 39}; 40 41int main() { 42 Vegetable item[number_of_vegetable]; 43 44 for (int i = 0; i < number_of_vegetable; i++) { 45 std::string s; 46 int n; 47 48 std::cin >> s; 49 std::cin >> n; 50 51 item[i].putname(s); 52 item[i].putprice(n); 53 } 54 55 for (int i = 0; i < number_of_vegetable; i++) { 56 std::cout << item[i].getname() << " "; 57 std::cout << item[i].getprice() << " "; 58 std::cout << item[i].getpricewithtax() << std::endl; 59 } 60};

このようなコードを書いたところ、
std::round(price*1.1) = m;に対して

lvalue required as left operand of assignment(代入の左オペランドとして左辺値が必要)

というエラーが表示されました。
このエラーが表示されなくなるにはどうしたら良いでしょうか?
分かる方がいましたらご教授していただきたく存じます。

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

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

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

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

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

fana

2022/04/29 07:54 編集

> このエラーが表示されなくなるにはどうしたら良いでしょうか? どうすれば良いのか? と問うのであれば, std::round(price*1.1) = m; という問題の記述で「何をしたいのか?」っていう意図をまず説明すべきでは. すなわち, void getpricewithtax(int m) っていうメソッドってのはそもそも何をするものなの? っていう. 引数 m が何なのかもわからんし. (少なくともこのメソッドは提示された main 関数からは使われてない.そもそも要らない物なのであれば,このメソッドを削除すればそれで終了だと思うけど.)
退会済みユーザー

退会済みユーザー

2022/04/29 08:15

消費税を含めた値段を四捨五入して表示する処理を書きたいと考えています。 書き方がわからないためとりあえず public: void putprice(int n) { price = n; } public: int getprice() { return price; } を真似して書きました。
BeatStar

2022/04/29 12:08

とりあえず基礎からやった方がいいです。 今の質問では「空を飛ぼうと腕をパタパタと動かしてみましたがなぜか飛びません。鳥はこれで飛ぶのに」みたいな頓珍漢な質問です。 「人間は鳥と違って空は飛ばない」ことと「飛ぶには浮力と前進することが必要」といった基礎知識が必要です。 飛行機を作ったライト兄弟らのような人達はでたらめにやっているのではなく、既存の理論や関連知識から理論展開しています。 それを「基礎やるのだりー」とかでやらないのならどんな説明をしても無駄です。まずは基礎からやりましょう。 なにごとも基礎の積み重ねです。
BeatStar

2022/04/29 12:08

今回のは基礎ができていないことが原因です。
ikadzuchi

2022/04/29 14:00

「代入の左オペランドとして必要な左辺値」は誤訳しています。正しくは「代入の左オペランドとして左辺値が必要」です。
guest

回答3

0

ベストアンサー

C++

1#include <cmath> 2#include <iostream> 3#define number_of_vegetable 4 4 5class Vegetable { 6private: 7 std::string name; 8 int price; 9public: 10 void putname(std::string s) { name = s; } 11 std::string getname() const { return name; } 12 void putprice(int n) { price = n; } 13 int getprice() const { return price; } 14 int getpricewithtax() const { return std::round(price*1.1); } 15}; 16 17int main() { 18 Vegetable item[number_of_vegetable]; 19 20 for (int i = 0; i < number_of_vegetable; i++) { 21 std::string s; 22 int n; 23 std::cin >> s >> n; 24 item[i].putname(s); 25 item[i].putprice(n); 26 } 27 28 for ( const Vegetable& veg : item ) { 29 std::cout << veg.getname() << " " 30 << veg.getprice() << " " 31 << veg.getpricewithtax() << std::endl; 32 } 33}

投稿2022/04/29 12:38

episteme

総合スコア16614

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

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

0

getpricewithtaxメソッドは戻り値がvoidなんでそういうエラー出てますね


まったく質問が変わってるやんw
ってことで、

std::round(price*1.1) = m;に対して

これ、明らかに間違ってますが、
この文ではなにをするのか説明できるでしょうか

投稿2022/04/29 06:49

編集2022/04/29 07:50
y_waiwai

総合スコア87774

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

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

退会済みユーザー

退会済みユーザー

2022/04/29 08:00

消費税を含めた値段を四捨五入して表示する処理を書きたいと考えています。
退会済みユーザー

退会済みユーザー

2022/04/29 08:01

どうすれば消費税を含めた値段を四捨五入して表示できるかがわかりません。
y_waiwai

2022/04/29 08:06

この行では表示はしてませんよ
guest

0

このような方法でもできました。

C++

1#include <iostream> 2#define number_of_vegetable 4 3 4class Vegetable { 5 private: 6 std::string name; 7 int price; 8 9 public: 10 void putname(std::string s) { 11 name = s; 12 } 13 14 public: 15 std::string getname() { 16 return name; 17 } 18 19 public: 20 void putprice(int n) { 21 price = n; 22 } 23 24 public: 25 int getprice() { 26 return price; 27 } 28 29 public: 30 void putpricewithtax() { 31 std::round(price*1.1); 32 } 33 34 public: 35 int getpricewithtax() { 36 return std::round(price*1.1); 37 } 38}; 39 40int main() { 41 Vegetable item[number_of_vegetable]; 42 43 for (int i = 0; i < number_of_vegetable; i++) { 44 std::string s; 45 int n; 46 47 std::cin >> s; 48 std::cin >> n; 49 50 item[i].putname(s); 51 item[i].putprice(n); 52 } 53 54 for (int i = 0; i < number_of_vegetable; i++) { 55 std::cout << item[i].getname() << " "; 56 std::cout << item[i].getprice() << " "; 57 std::cout << item[i].getpricewithtax() << std::endl; 58 } 59};

投稿2022/04/29 14:27

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

BeatStar

2022/04/29 23:09

確かにエラーメッセージは出ないでしょうけど、仕様には沿ってないと思いますよ。 そもそもstd::round(...)とは何者でしょうか? プログラミングって単にエラーメッセージが出なければいいというものではありません。 ちゃんとアプリとかとして使えなければ話になりません。
退会済みユーザー

退会済みユーザー

2022/04/29 23:16

貴重なアドバイスありがとうございます。以後気をつけます。
fana

2022/05/02 01:48

> putpricewithtax() いやだからこのメソッド自体が丸ごと要らないんじゃないの? 使わないし意味のある機能も持たないメソッドを書いとく意義は何なの?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問