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

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

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

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

1229閲覧

RStudioCloudで数当てゲーム!正解時に入力回数を表示したい!

syogo

総合スコア2

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2020/07/23 05:52

前提・実現したいこと

数当てゲームで正解した時に、
「答えはXXです.○回で当たりました!」と表示させたいのですが、
入力回数をカウントする命令の書き方が釈然としません。

最近、RStudioCloudでプログラミングの勉強を始めた初心者です。
解決策を模索していたところこちらにたどり着きました。
お力をお借りできれば幸いです。

該当のソースコード

r=as.integer(runif(n=1, min=1, max=100)) a=-1 while (a!=r) { a=readline("1から100までの自然数を入力して下さい:") if(a>r){ print("大きすぎます",quote=F) }else if(a<r){ print("小さすぎます",quote=F) }else if(a==r){ print(paste("答えは",r,"です.",〇,"回で当たりました!",sep=""),quote=F) } }

試したこと

「入力した回数を保存するための変数を追加し,1回入力するごとに回数を記録する変数の値が1増えるようにする」のが良いのではと考え着きましたが、具体的なプログラムの見通しがたっていません。

また過去に作成した、階乗や等差数列を求める関数から、応用できそうでできていません。
ー階乗ー
x=0
n=0
kaijo=1
myFactorial=function(x){
if(x==0) {return(1)}
for (n in 1:x) {
kaijo=c(n*kaijo)}
return(kaijo)}

ー等差数列ー
a=0
d=0
n=0
t=0
tousa=0
mierutousa=c()
ap=function(a,d,n){for (t in 1:n) {
tousa=a+(t-1)*d
mierutousa=c(mierutousa,tousa)
}
return(mierutousa)
}

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

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

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

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

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

guest

回答1

0

ベストアンサー

ここまで書けている方なら簡単な気がしますが。

cnt変数を0で初期化する
なにか処理(今回はreadline)する度にcntを1つカウントアップする
終了時にcntを出力する

R

1r=as.integer(runif(n=1, min=1, max=100)) 2cnt = 0 3a=-1 4while (a!=r) { 5 a=readline("1から100までの自然数を入力して下さい:") 6 cnt = cnt + 1 7 if(a>r){ 8 print("大きすぎます",quote=F) 9 }else if(a<r){ 10 print("小さすぎます",quote=F) 11 }else if(a==r){ 12 print(paste("答えは",r,"です.",cnt,"回で当たりました!",sep=""),quote=F) 13 } 14}

投稿2020/07/23 06:01

aokikenichi

総合スコア2240

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

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

syogo

2020/07/23 06:15

ご回答ありがとうございます。 なるほど! cnt=cnt+1のようにカウントしていく変数の考え方がどうやら毎々とても苦手で閃きまで時間を食うようです。 また「処理するたびにカウントする変数を書き込む場所は、カウントしたい処理の次」という当たり前といえば当たり前の考え方が、恥ずかしながら分かっていませんでした。 この度のご回答とても参考になりました!初歩的な質問で失礼いたしました。精進いたします。
aokikenichi

2020/07/23 07:10

Rユーザーが増えて嬉しい限りです ご縁がありましたらまたお願いいたします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問