No.5ベストアンサー
- 回答日時:
あなたのソースを多少修正しました。
以下のようにしてください。
---------------------------------------------
print '正整数を入力して下さい: ';
$n = <STDIN>;
chomp($n);
while ($n > 0) {
$y = $n;
while ($y > 0) {
print "+";
$y--;
}
print "\n";
$n--;
}
No.4
- 回答日時:
その 「*をその数だけ書く」プログラムを、必要な数だけ繰り返す、という2重ループになります。
その補足にあるプログラムは
print "+";
while ($y > 0) {
$n = $n--;
$y--;
}
$n--;
}
というプログラムを
while ($n > 0) {
}
で繰り返す、という構造になっています。
上の部分、「*をその数だけ書く」プログラムになっていますか?
で、こういう決った数のループにはforの方が適切です。
また、入力した$nとループ制御用の変数とは分けるとよいでしょう。
(十分に理解してわざとやっているならともかく)
No.3
- 回答日時:
あ,
print map { "*" x $_ . "\n" } reverse 1..<STDIN>;
で終わりだ.
さておき, なにをどう考えてそのように書いたのでしょうか? そしてどのように「うまくいかない」のですか?
No.1
- 回答日時:
> 整数を1個受け取って
どこからどうやって受け取るのでしょうか?
コマンドライン引数から受けとるのと、Web上のフォームから受けとるのとではまったく違います。
他にも考えられる手段がたくさんあります。
> 整数の数だけコマンドプロンプト上に*の記号を使って縦横に左上の向きの直角三角形を表示
この三角形を書くためには、 自然数n を入力したら
0行目 * が ?個
1行目 * が ?個
2行目 * が ?個
....
と、?個にところに何が入るか、わかりますか?
5の例が質問文にありましたが、これは
5個
4個
3個
2個
1個
となってますよね?
たとえば、5を入力しら
5
4
3
2
1
と表示するプログラムはできますか?
これができるなら、Perlには x演算子という便利なものがあるので、 * を n個並べる、というのは簡単にできます。
http://perldoc.jp/docs/perl/5.8.8/perlop.pod
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PDF C#でfloatを整数部、小数部とも桁数固定で文字表示したい 2 2022/07/28 09:37
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/10/25 10:52
- Ruby VBA 2 2023/01/14 14:14
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- 数学 問題文 正n角形がある(nは3以上の整数)。この正n角形のn個の頂点のうちの3個を頂点とする三角形に 4 2023/03/22 14:57
- Ruby プログラミングについてです。教えていただきたいです。 実行例のように、整数xが1から12までにつき、 2 2022/12/19 22:47
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10進数→2進数
-
Pythonのプログラミングの質問...
-
内部処理形式が日付型 (Date) ...
-
Perlで複数の値を返す良い方法...
-
Application.ScreenUpdating = ...
-
どちのほうがすきですか?
-
JSONで文字列が長い時
-
16進の10進変換について
-
セレクトボックスの中を一部隠...
-
メモリをアドレスを直接指定し...
-
<SELECT>タグの折り返し
-
formで特定のinputを送信しない...
-
Python - Excel で Webからデー...
-
フォームの日本語が文字化け
-
UWSC:ポップアップウインドウ...
-
int(input("○○"))の使い方
-
文字の横にプルダウンを表示さ...
-
ACCESS テキストボックスを隙...
-
複数列を持ったリストボックス...
-
パイソンのクラスについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
内部処理形式が日付型 (Date) ...
-
Perlで複数の値を返す良い方法...
-
Net::Telnetでタイムアウト時間...
-
プロトタイプ宣言のワーニング...
-
CGIから複数の別プログラムを同...
-
Net::SSH::Perlについて
-
IO-Socketで…
-
HASH(0xほげほげ)
-
Perl 一定時間後にプログラムを...
-
1行での計算について
-
SOCKETで入手したデータを抜き...
-
for文の中でのforeachの問題
-
Rubyのgets関数について
-
Perlでsub a($)のように$をつけ...
-
ループで小数を使うと変な誤差が
-
dieやPerl自体でエラーが発生し...
-
引数の値をURLのパスに配列とし...
-
Perlで自分自身の関数名を知る...
-
ハノイの塔の問題で困っており...
-
Perlですが、redoの処理がいま...
おすすめ情報
書き忘れていたんですがwhile文を使って2重ループを使って書こうとしていて
print '正整数を入力して下さい: ';
$n = <STDIN>;
chomp($n);
while ($n > 0) {
print "+";
while ($y > 0) {
$n = $n--;
$y--;
}
$n--;
}
このように書いてみたんですがうまくいかないです。。。
他のかたの補足分にも書いたんですがwhile文を使って2重ループの構造で書こうとしていて
*をその数だけ書くのはできるんですが一個ずつ減らして*を下に並べる方法がわからないです。。。