さっぱりわからなくて相談にのってくれるとありがたいのですが・・・。
問題
2つの整数を入力することを繰り返すプログラムを作りなさい。入力を打ち返すこと、2つの整数のうち、最初の数に負の値が入力されたら繰り返しを終わるようにしなさい。
という問題なんですが。
自分は
#include <iostream>
using namespace std;
int main()
{
int x,y;
bool status;
x=0;
y=0;
while(x < 10)
{
status = (cin>>x != 0);
cout<<"status:"<<status<<"x:"<<x<<endl;
cin>>y;
cout<<"status:"<<status<<"y:"<<y<<endl;
}
x=x+1;
y=y+1;
return 0;
}
と作って見たんですが。うまくいかずに止まっています。アドバイスいただければ助かります。
初心者です。課題なんですが・・・。
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: 初心者です。課題なんですが・・・。
statusという変数が必要ないのであれば、
としてみたらどうでしょう?
最後のx = x + 1;とかは何で入ってるんですか?
x = 1; // 適当な正の数字
while(x >= 0) //最初の入力が負であったらループから抜ける
{
cin >> x;
cin >> y;
if( x < 0 ){ //最初の入力が負であったらstatus:trueを表示
cout << "status:true" << "x:" << x << " " << "y:" << y << endl;
}
else{ //最初の入力が負であったらstatus:trueを表示
cout << "status:false" << "x:" << x << " " << "y:" << y << endl;
}
}
最後のx = x + 1;とかは何で入ってるんですか?
参考になります。
すみません。とても参考になりました。
while は前回の課題のコピペのままだったので・・・。
x=x+1;は繰り返すことに必要なのかと思ってました。
正直statusはなぜいるのかわからないのですが。これはつかえと先生から言われていたので。
で作りなおしてみたんですが
#include <iostream>
using namespace std;
int main()
{
int x,y;
bool status;
x=1;
while(x >= 0)
{
status = (cin>>x != 0);
cout<<"status:"<<status<<"x:"<<x<<endl;
status = (cin>>y != 0);
cout<<"status:"<<status<<"y:"<<y<<endl;
}
return 0;
}
とやってみたんですが、これだとyが負の値になると終わってしまうんですよ。
どうしたらいいでしょうか?
それから授業でif else はまだならってなく使えなくて・・・。できればそれを使わない方法があれば・・・アドバイスお願いします。
迷惑かけてすみません。
while は前回の課題のコピペのままだったので・・・。
x=x+1;は繰り返すことに必要なのかと思ってました。
正直statusはなぜいるのかわからないのですが。これはつかえと先生から言われていたので。
で作りなおしてみたんですが
#include <iostream>
using namespace std;
int main()
{
int x,y;
bool status;
x=1;
while(x >= 0)
{
status = (cin>>x != 0);
cout<<"status:"<<status<<"x:"<<x<<endl;
status = (cin>>y != 0);
cout<<"status:"<<status<<"y:"<<y<<endl;
}
return 0;
}
とやってみたんですが、これだとyが負の値になると終わってしまうんですよ。
どうしたらいいでしょうか?
それから授業でif else はまだならってなく使えなくて・・・。できればそれを使わない方法があれば・・・アドバイスお願いします。
迷惑かけてすみません。
Re: 初心者です。課題なんですが・・・。
else文を使わなくても、以下のようにすれば出来ます。
また、statusを使えということなので、while文の条件に対しても積極的に使うように変更しました。
それでこちらからの質問なんですが、なぜ( cin >> x != 0 ) のような事を行っているのでしょう?
一応今後のために、ここははっきりとしておいたほうがよいと思います。
・・・それにしても、if-elseを習う前にC++から入ってるんですねぇ・・・。
また、statusを使えということなので、while文の条件に対しても積極的に使うように変更しました。
bool status = false; // 最初の値が負であるかどうかの判定
int x, y;
while( !status ){ // while( status == false ) としてもよいです。
cin >> x;
cin >> y;
if( x < 0 ){
status = true; // 負の値が代入された。
}
}
一応今後のために、ここははっきりとしておいたほうがよいと思います。
・・・それにしても、if-elseを習う前にC++から入ってるんですねぇ・・・。
Re: 初心者です。課題なんですが・・・。
このコードで問題ありませんよ。
xに-1を入力した時点では終了しません。
yも入力したあとに x >= 0 の判定が行われるためです。
もしxに負をの数値を入れた時点で終了させたかったら変更する必要があります。
xに-1を入力した時点では終了しません。
yも入力したあとに x >= 0 の判定が行われるためです。
もしxに負をの数値を入れた時点で終了させたかったら変更する必要があります。
Re: 初心者です。課題なんですが・・・。
これは正直なんなのかさっぱりわかりません。( cin >> x != 0 )
どうして!マークなんですかね?
とりあえずあのままの感じでだすことにします。ありがとうございます。
で追加質問なんですが・・・。
問題 2つの数を長方形の2辺と考えて、2数を入力して面積を計算するプログラムを作りなさい。面積の合計も求めるようにしなさい。
なんですが・・。
僕は
#include <iostream>
using namespace std;
int main()
{
int x,y,sum;
while(x>=0)
{
cin>>y;
cout<<"x:"<<x<<endl;
cin>>x;
cout<<"y:"<<y<<endl;
}
sum=x*y-
cout<<"面積の合計"<<sum<<endl;
return 0;
}
でやってみたんですが。うまくできません。whlieの変数もどうしていいかよくわからないので。
すみませんがアドバイスお願いします。
たびたびすみません。
どうして!マークなんですかね?
とりあえずあのままの感じでだすことにします。ありがとうございます。
で追加質問なんですが・・・。
問題 2つの数を長方形の2辺と考えて、2数を入力して面積を計算するプログラムを作りなさい。面積の合計も求めるようにしなさい。
なんですが・・。
僕は
#include <iostream>
using namespace std;
int main()
{
int x,y,sum;
while(x>=0)
{
cin>>y;
cout<<"x:"<<x<<endl;
cin>>x;
cout<<"y:"<<y<<endl;
}
sum=x*y-
cout<<"面積の合計"<<sum<<endl;
return 0;
}
でやってみたんですが。うまくできません。whlieの変数もどうしていいかよくわからないので。
すみませんがアドバイスお願いします。
たびたびすみません。
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: 初心者です。課題なんですが・・・。
惜しいですね、x,yが入力されるたびに面積を表示するのですよね。
であれば、
sum=x*y; // -
cout<<"面積の合計"<<sum<<endl;
はこの位置でいいのでしょうか??
( cin >> x != 0 )
まず、==では左辺と右辺が同じ値かを判定します。(同じであれば、trueにあたる値)
逆に、!=では左辺と右辺が違う値かを判定します。(違っていれば、trueにあたる値)
また、僕は、c++についてはそれほど詳しくないのですが、この文だと、
cin >> xの戻り値を判定していることになるのではないでしょうか??
Re: 初心者です。課題なんですが・・・。
確かにそうなりますね。とおえう さんが書きました:これは正直なんなのかさっぱりわかりません。( cin >> x != 0 )
また、僕は、c++についてはそれほど詳しくないのですが、この文だと、
cin >> xの戻り値を判定していることになるのではないでしょうか??
cin >> xの戻り値は、
http://www.geocities.jp/ky_webid/cpp/library/029.html
にあるように(ofstreamのほうですが^^;)、std::ifstream&であるはずなので、うーん・・・どうなるんだろう。。。