while文で改行文字を出力しない方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
じゃが

while文で改行文字を出力しない方法

#1

投稿記事 by じゃが » 16年前

初めまして。さっそくですが質問をさせていただきます。
 
 [1.1] 自分が今行いたい事は何か
明解C++の演習問題3-5を解いていたのですが、分からなかったので質問します。
 
 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
#include <iostream>
using namespace std;

int main()
{
    int a;
    cout << "何個☆を表示しますか:";
    cin >> a;

    int i = 0;
    while(i < a){
        cout << "☆";
        i++;
}

    cout << "\n";

    return 0;
}

 [1.4] 今何がわからないのか、知りたいのか
☆を表示するまではできたのですが、1未満の数字を入れて改行文字を出力しないようにしたいのですが、全く分かりません。
C++の知識は全くありません。

自分が考えたところまでは、1回もwhile文が実行されなければ改行はされないかなと思い、while文の前にif文とかをいれてみましたがだめでした。

lbfuvab

Re:while文で改行文字を出力しない方法

#2

投稿記事 by lbfuvab » 16年前

改行を出力している箇所でif文を使って下さい。

ああ

Re:while文で改行文字を出力しない方法

#3

投稿記事 by ああ » 16年前

cout << "\n";
↑これが改行を出力している部分である
ということが分かっていないように見えてしまいました。

"1未満の数字を入れて改行文字を出力しないようにしたい"
を言葉通りに捉えれば、lbfuvabさんのおっしゃるように、

cout << "\n";

if(!(a < 1)) cout << "\n";

となるんでしょうかね。

TOMONORI

Re:while文で改行文字を出力しない方法

#4

投稿記事 by TOMONORI » 16年前

入力された時点でaに関しての制限(正数以外ダメ!)等を記述するといいかもです。
aが1以下ならそっけなく終了。とすれば今回はいいような気がします。
#include <iostream>
using namespace std;

int main()
{
	cout << "何個☆を表示しますか:";
	int a;
	cin >> a;
	// a < 1 なら即終了
	if(a < 1)
	{
		return -1;
	}

	// 出力
	for(int i = 0; i < a; ++ i)
	{
		cout << "☆";
	}
	// 改行
	cout << endl;

	return 0;
}
補足:
課題に特に縛りがなければ今回はfor文を使うべきだと思います(ループ内でしか使わない
変数はループ内で宣言←スコープ制限。インクリメントの明示。などの理由で)。
std namespace を使うのであらば改行はstd::endlを使うほうがそろっていて良いです。
aよりもnumStarのほうがいい名前で、intよりもunsigned intのほうがふさわしいです。
++演算子は常に前置で使うようにしたほうがいいです。

質問やつっこみがあったら教えてください。
あと、補足の内容は無視してくださってもかまいません。


(プレタグ内のタブストップってどうやって変えるんでしょう?変えられないのかな?)

じゃが

Re:while文で改行文字を出力しない方法

#5

投稿記事 by じゃが » 16年前

皆様ありがとうございます。
実行できました。
下の部分の
cout << "\n";
を何回かいじったのですが、実行結果が変わらなかったので関係ないと思いこんで上ばかり変えてました。。

TOMONORIさんの補足は、参考にさせていただきます。
まだ読み始めたばかりなので、全く分かりませんが・・・。

閉鎖

“C言語何でも質問掲示板” へ戻る