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

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

新規登録して質問してみよう
ただいま回答率
85.43%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

4回答

1147閲覧

読み込んだ個数だけ*を表示し5個表示するごとに改行するプログラムを作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2020/03/10 06:43

Ruby

1print "何個*を表示しますか?" 2n = gets.to_i 3i = 0 4if n > 0 5 while i < n / 5 6 puts "*****" 7 i += 1 8 end 9 rest = n % 5 10 if rest > 0 11 while i < rest 12 print "*" 13 i += 1 14 end 15 end 16end

このコードだと5の倍数を入力するとちゃんと動くのですが
5の倍数以外を入力するとうまく動きません

if rest > 0以降に問題があるのかなと思いテストしてみたらこれは5で割った余り分だけ*が表示されました(下のコードです)

Ruby

1n = gets.to_i 2i = 0 3rest = n % 5 4 if rest > 0 5 while i < rest 6 print "*" 7 i += 1 8 end 9 end
DrqYuto👍を押しています

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

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

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

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

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

guest

回答4

0

ベストアンサー

print "何個*を表示しますか?" n = gets.to_i puts ("*" * n).gsub(/*{5}/,"*****\n")

別解
puts "*****\n" * (n/5) + "*" * (n%5)

更に別解
上のだと nが 3京とかだとメモリーががりなくなるので

(n/5).times { puts "*****"} puts "*" * (n%5)

投稿2020/03/10 07:20

編集2020/03/10 07:38
winterboum

総合スコア23461

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

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

0

問題としては、iのリセットを忘れてますね

ruby

1print "何個*を表示しますか?" 2n = gets.to_i 3i = 0 4while i < n 5 mul = n - i 6 mul = 5 if mul > 5 7 puts "*" * mul 8 i += mul 9end

ruby

1print "何個*を表示しますか?" 2n = gets.to_i 3return unless n > 0 45.step(n, 5) do 5 puts "*" * 5 6end 7puts "*" * (n % 5)

投稿2020/03/10 06:57

編集2020/03/10 07:00
asm

総合スコア15147

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

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

退会済みユーザー

退会済みユーザー

2020/03/10 07:00

ありがとうございます<(_ _)> 時間かけてコードを読ませていただきます????
guest

0

Ruby

1print "何個*を表示しますか?" 2n = gets.to_i 3i = 0 4if n > 0 5 while i < n / 5 6 puts "*****" 7 i += 1 8 end 9 rest = n % 5 10 if rest > 0 11 while i < rest # ここに来た時点で i が 0 じゃない 12 print "*" 13 i += 1 14 end 15 end 16end 17

投稿2020/03/10 06:47

ozwk

総合スコア13544

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

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

0

Ruby

1print "何個*を表示しますか?" 2n = gets.to_i 3i = 0 4if n > 0 5 while i < n / 5 6 puts "*****" 7 i += 1 8 end 9 rest = n % 5 10 num = 0 #iではなく新しくnumという変数をつくる 11 if rest > 0 12 while num < rest 13 print "*" 14 num += 1  15 end 16 end 17end

新しい変数numを宣言して代入したら行けました!

投稿2020/03/10 06:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.43%

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

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

質問する

関連した質問