- ベストアンサー
VBのコードを教えてください;;
私は今VBを勉強しているのですが行き詰ってしまってどうしても この問題の考え方とコードが分かりません;誰か御助言くださいませ; ●1+2+3+…+nの合計が1000を超えたときのnの値と、その合計を表示させる。 ●n(ただし12までの数)の値を入力しnとn!の値を表示させる n!=1×2×…×n ちなみにVisualStdioを使っています。分かりやすいコードを教えて 頂ければ幸いです。どうぞ宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんちくわ~。 学校の課題。。。のような雰囲気?がプンプンとするので考え方だけ。。。 もっとも、使い方。からまったく分かりません。というのでしたら、VBの参考書などを買ってきましょう。 >>●1+2+3+…+nの合計が1000を超えたときのnの値と、その合計を表示させる。 これは繰り返しの作業が必要になるものだ~といのは分かりますよね? 1+2+3+4+。。。まぁ、「足す値を1ずつ多くしている」ので、1回繰り返すごとに「足す値」を1つ多くしてあげましょう。 for文。を使えば幸せになれるかな?-w- 1000を超えたときに。。。ということは、1000と比較してやればいいわけですよね? 比較するためには「1000」と「比較する数字」が必要ですが、比較する数字。は1回繰り返し処理を行うごとに増えますよね? ですから変数に保存してあげましょう。 最初の繰り返しでは、変数に1を保存。次の繰り返しでは変数に1+2を保存、さらに次では変数に1+2+3を保存。(まぁ、ここは変数は保存してあるのですから変数に1を保存。変数に変数+2を保存。変数に変数+3を保存。となっていきます。 >>●n(ただし12までの数)の値を入力しnとn!の値を表示させる こちらはほとんど自分で答えを書いているような? n!=1×2×…×n これをやればいいだけですよ。 ただ、逆なほうが楽だと思うので。。。nが8だった場合は 表示する値=8×7×6×5... となりますね。 表示する値。を変数で宣言してあげて、入力された値。を1ずつ引いて計算してあげていけばいいんです。 8×7...56×6...336×5...と。 まぁ、もう一度言いますが。。。 VBの使い方。すら分からない状態からのスタートでしたら「本屋に行って参考書を買った方が得策」ですよ。
その他の回答 (4)
二次方程式を使ったらどうでしょう。 1+2+3+・・・+nの合計は (1+n)*n/2です。 ということは、 (1+n)*n/2>1000 (1+n)*n>2000 n^2+n-2000>0 2次方程式の解の方程式を使って n>(-1+√1+8000)/2 ということになります。 1000をaに置き換えると n>(-1+√1+8*a)/2 これをコードで書くと a=1000 n=(-1+SQR(1+8*a))/2 n=int(n+1) 以上でどうでしょうか。 計算ミスがあったらすみません。
- miran_2006
- ベストアンサー率25% (29/116)
フォームにボタン2個とテキストボックスを貼る Private Sub Command1_Click() Dim n As Integer Dim m As Integer Do While m < 1000 n = n + 1 m = m + n Loop MsgBox (m) End Sub Private Sub Command2_Click() On Error GoTo aaa Dim n As Integer Dim m As Integer Dim mm As Long mm = 1 n = Text1.Text If n < 0 Or n > 12 Then MsgBox ("TextBoxには1~12の数値を入力してください") Exit Sub End If For m = 1 To n mm = mm * m Next MsgBox (mm) Exit Sub aaa: MsgBox ("TextBoxには1~12の数値を入力してください") End Sub
- X-trail_00
- ベストアンサー率30% (438/1430)
基礎の基礎ッぽいですが。 フォームを作ってボタンを置いて そのクリックイベントでメッセージボックスを表示する。 とかは出来ますよね? 基礎の部分からは参考URLをご覧ください。 ヒントを(殆ど答えですが・・・) それぞれ答え用の変数を用意します。 答えに対して操作します。 1番目はDo-Loop文を使用すれば問題ないでしょう。 条件は until n > 1000 n=答え 2番目はFor-Next文を使用しましょう。 条件は i = 1 TO n a=答え (iでもnでもない変数)
- chie65536
- ベストアンサー率41% (2512/6032)
ヒントだけ。 >●1+2+3+…+nの合計が1000を超えたときのnの値と、その合計を表示させる。 2重ループを組む。 外側のループはnを1から始めて1づつ増加する無限ループ。 ループの最後で「合計が1000を超えたとき」を調べてループを脱出する。 内側のループは1からnまで数えて、合計を計算する。 >●n(ただし12までの数)の値を入力しnとn!の値を表示させる これも2重ループ 外側のループはnを1から12まで1づつ増加するループ 内側のループは1からnまで数えて、べき乗を計算する。