キーボードの入力より「野菜の名前」、「野菜の値段」「消費税込みの値段」を半角スペース区切りで表示するようなプログラムを作成したいと考えています。今のところ「野菜の名前」、「野菜の値段」を表示する処理は書けたのですが、「消費税込みの値段」を表示する処理が書けていません。
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(代入の左オペランドとして左辺値が必要)
というエラーが表示されました。
このエラーが表示されなくなるにはどうしたら良いでしょうか?
分かる方がいましたらご教授していただきたく存じます。
> このエラーが表示されなくなるにはどうしたら良いでしょうか?
どうすれば良いのか? と問うのであれば,
std::round(price*1.1) = m;
という問題の記述で「何をしたいのか?」っていう意図をまず説明すべきでは.
すなわち,
void getpricewithtax(int m)
っていうメソッドってのはそもそも何をするものなの? っていう.
引数 m が何なのかもわからんし.
(少なくともこのメソッドは提示された main 関数からは使われてない.そもそも要らない物なのであれば,このメソッドを削除すればそれで終了だと思うけど.)
消費税を含めた値段を四捨五入して表示する処理を書きたいと考えています。
書き方がわからないためとりあえず
public:
void putprice(int n) {
price = n;
}
public:
int getprice() {
return price;
}
を真似して書きました。
とりあえず基礎からやった方がいいです。
今の質問では「空を飛ぼうと腕をパタパタと動かしてみましたがなぜか飛びません。鳥はこれで飛ぶのに」みたいな頓珍漢な質問です。
「人間は鳥と違って空は飛ばない」ことと「飛ぶには浮力と前進することが必要」といった基礎知識が必要です。
飛行機を作ったライト兄弟らのような人達はでたらめにやっているのではなく、既存の理論や関連知識から理論展開しています。
それを「基礎やるのだりー」とかでやらないのならどんな説明をしても無駄です。まずは基礎からやりましょう。
なにごとも基礎の積み重ねです。
今回のは基礎ができていないことが原因です。
「代入の左オペランドとして必要な左辺値」は誤訳しています。正しくは「代入の左オペランドとして左辺値が必要」です。
回答3件
あなたの回答
tips
プレビュー