C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: loopの使い方について


(過去ログ 24 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■11059 / inTopicNo.1)  loopの使い方について
  
□投稿者/ ドラゴン (1回)-(2007/12/06(Thu) 06:58:56)

分類:[VB.NET/VB2005] 

http://www.dotup.org/uploda/www.dotup.org7860.zip.html
loopを使って 2−5000までの素数をすべて TextBoxに書き込みというプログラムを作成しているのですが
loopの使い方がいまひとつわからずうまく作動しません
どうすればよいでしょうか?
引用返信 編集キー/
■11061 / inTopicNo.2)  Re[1]: loopの使い方について
□投稿者/ れい (263回)-(2007/12/06(Thu) 07:14:23)
No11059 (ドラゴン さん) に返信
> どうすればよいでしょうか?

何がわからないのか、どこがわからないのか、よく考えて、
他人に伝える必要のある部分だけのコードを抽出し、
他人に伝わるように説明すれば
誰か答えてくれるかもしれません。

プロジェクトファイルをまるまる渡されても
どこがわからないのかわかりません。
引用返信 編集キー/
■11062 / inTopicNo.3)  Re[2]: loopの使い方について
□投稿者/ ドラゴン (2回)-(2007/12/06(Thu) 07:20:13)
No11061 (れい さん) に返信
> ■No11059 (ドラゴン さん) に返信
>>どうすればよいでしょうか?
>
> 何がわからないのか、どこがわからないのか、よく考えて、
> 他人に伝える必要のある部分だけのコードを抽出し、
> 他人に伝わるように説明すれば
> 誰か答えてくれるかもしれません。
>
> プロジェクトファイルをまるまる渡されても
> どこがわからないのかわかりません。

失礼しました、
Dim Loopnumber As Integer
Dim IsPrime As Boolean
Dim Uppernumber As Single
Dim Undernumber As Single

For Loopnumber = 2 To 5000
For Uppernumber = 2 To Undernumber - 1
If Undernumber Mod Loopnumber = 0 Then
IsPrime = False
End If
Next
If Undernumber Mod Loopnumber <= 1 Then
IsPrime = True
End If
Next
TextBox1.Text = IsPrime

このコードだとボタン押しても True としか表示されず
テキストボックスに素数が一つもでてこないので、
どうすればよいかと、先日から悩んでいました。

最終的には2−5000の間の素数を全て出せるようにしたいのです。

引用返信 編集キー/
■11063 / inTopicNo.4)  Re[3]: loopの使い方について
□投稿者/ Jitta on the way (50回)-(2007/12/06(Thu) 07:45:00)
No11062 (ドラゴン さん) に返信
> ■No11061 (れい さん) に返信
>>■No11059 (ドラゴン さん) に返信
> >>どうすればよいでしょうか?
>>
>>何がわからないのか、どこがわからないのか、よく考えて、
>>他人に伝える必要のある部分だけのコードを抽出し、
>>他人に伝わるように説明すれば
>>誰か答えてくれるかもしれません。
>>
>>プロジェクトファイルをまるまる渡されても
>>どこがわからないのかわかりません。
>
> 失礼しました、
> Dim Loopnumber As Integer
> Dim IsPrime As Boolean
> Dim Uppernumber As Single
> Dim Undernumber As Single
>
> For Loopnumber = 2 To 5000
ここで、IsPrime=Trueをしておくと、最後のIF文がいりません。
また、3から始めると、Step 2とでき、ループの回数が減ります。
> For Uppernumber = 2 To Undernumber - 1
こちらのループはLoopnumberの平方根まででいいです。
> If Undernumber Mod Loopnumber = 0 Then
> IsPrime = False
> End If
> Next
> If Undernumber Mod Loopnumber <= 1 Then
> IsPrime = True
> End If
> Next
> TextBox1.Text = IsPrime
表示しなければならないのは何ですか?IsPrimeは、素数ではなく、「素数ですか?」ではないですか?
>
> このコードだとボタン押しても True としか表示されず
> テキストボックスに素数が一つもでてこないので、
> どうすればよいかと、先日から悩んでいました。
>
> 最終的には2−5000の間の素数を全て出せるようにしたいのです。
>
引用返信 編集キー/
■11064 / inTopicNo.5)  Re[3]: loopの使い方について
□投稿者/ れい (264回)-(2007/12/06(Thu) 07:50:43)
2007/12/06(Thu) 07:53:41 編集(投稿者)
No11062 (ドラゴン さん) に返信
> このコードだとボタン押しても True としか表示されず
> テキストボックスに素数が一つもでてこないので、
> どうすればよいかと、先日から悩んでいました。

IsPrimeはBooleanです。
TextBox.Textに代入すると文字列に変換されますから
「True」もしくは「False」となるのも当然です。

やりたいことはだいたいわかりますが、
あちこちに変な場所があります。

以下のコードで動くと思います。
比較するとよいでしょう。

For Loopnumber = 2 To 5000
  IsPrime = True
  For Uppernumber = 2 To Loopnumber - 1
    If Loopnumber Mod Uppernumber = 0 Then IsPrime = False
  Next
  If IsPrime Then TextBox1.Text = TextBox1.Text & IsPrime
Next

引用返信 編集キー/
■11065 / inTopicNo.6)  Re[4]: loopの使い方について
□投稿者/ ドラゴン (3回)-(2007/12/06(Thu) 07:55:44)
2007/12/06(Thu) 07:57:35 編集(投稿者)

>> Dim Loopnumber As Integer
>> Dim IsPrime As Boolean
>> Dim Uppernumber As Single
>> Dim Undernumber As Single
>>
>> For Loopnumber = 2 To 5000
> ここで、IsPrime=Trueをしておくと、最後のIF文がいりません。
> また、3から始めると、Step 2とでき、ループの回数が減ります。
>> For Uppernumber = 2 To Undernumber - 1
> こちらのループはLoopnumberの平方根まででいいです。 
>> If Undernumber Mod Loopnumber = 0 Then
>> IsPrime = False
>> End If
>> Next
>> If Undernumber Mod Loopnumber <= 1 Then
>> IsPrime = True
>> End If
>> Next
>> TextBox1.Text = IsPrime
> 表示しなければならないのは何ですか?IsPrimeは、素数ではなく、「素数ですか?」ではないですか?
表示したいのは IsPrime判定でTrueになった数字を次々とテキストボックスに乗せたいのです。

引用返信 編集キー/
■11066 / inTopicNo.7)  Re[4]: loopの使い方について
□投稿者/ ドラゴン (4回)-(2007/12/06(Thu) 07:59:38)
No11064 (れい さん) に返信
> 2007/12/06(Thu) 07:53:41 編集(投稿者)
>
> ■No11062 (ドラゴン さん) に返信
>>このコードだとボタン押しても True としか表示されず
>>テキストボックスに素数が一つもでてこないので、
>>どうすればよいかと、先日から悩んでいました。
>
> IsPrimeはBooleanです。
> TextBox.Textに代入すると文字列に変換されますから
> 「True」もしくは「False」となるのも当然です。
>>なるほど、いわれてみればそうですね。

>
> やりたいことはだいたいわかりますが、
> あちこちに変な場所があります。
>
> 以下のコードで動くと思います。
> 比較するとよいでしょう。
>
> For Loopnumber = 2 To 5000
> IsPrime = True
> For Uppernumber = 2 To Loopnumber - 1
> If Loopnumber Mod Uppernumber = 0 Then IsPrime = False
> Next
> If IsPrime Then TextBox1.Text = TextBox1.Text & IsPrime
> Next

コードありがとうございます、比較してみます
引用返信 編集キー/
■11067 / inTopicNo.8)  Re[5]: loopの使い方について
□投稿者/ ドラゴン (5回)-(2007/12/06(Thu) 09:11:33)
どうしても Trueが乱立してしまいますが
ここから先は自分でやってみたいと思います

れい様、 Jitta on the way様
ご協力と助言ありがとうございました
解決済み
引用返信 編集キー/
■11068 / inTopicNo.9)  Re[6]: loopの使い方について
□投稿者/ れい (265回)-(2007/12/06(Thu) 09:16:45)
No11067 (ドラゴン さん) に返信
> どうしても Trueが乱立してしまいますが
> ここから先は自分でやってみたいと思います

あー
私のコード、間違ってますね。

TrueTrueTrue…

になっちゃうと思います。

まぁちょうどいいのかな。
間違いはたぶん一箇所。
がんばりましょう。
解決済み
引用返信 編集キー/
■11120 / inTopicNo.10)  Re[7]: loopの使い方について
□投稿者/ ドラゴン (6回)-(2007/12/07(Fri) 10:51:44)
For Loopnumber = 2 To 5000
IsPrime = True
For Uppernumber = 2 To Loopnumber - 1
If Loopnumber Mod Uppernumber = 0 Then IsPrime = False
Next
If IsPrime Then TextBox1.Text = TextBox1.Text & " " & Loopnumber
Next

に書き換えたらできましたw‘
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -