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

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

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

Re[17]: 偶然できたプログラムの解釈をお願い [1]


(過去ログ 23 を表示中)

[トピック内 56 記事 (21 - 40 表示)]  << 0 | 1 | 2 >>

■10286 / inTopicNo.21)  Re[10]: 偶然できたプログラムの解釈をお願い
  
□投稿者/ やまだ (5回)-(2007/11/15(Thu) 02:46:54)
ちょっとプログラムでないところで、考え方についてコメントさせていただきますね。

>もし、表示された数字iを3で割ったときの余りが0になるときに、数字iを文字”k”に変換する、というコードを書けばよいのですよね。
この時点で、コードに引きずられた発想になっていると思います。
#できないとは申しませんが、「トリッキーなやり方を追求したい!」というのでなければお勧めしません。

つくりたいものは、
「数字が3で割り切れるときには、文字 "k" を表示する」
「数字が3で割り切れないときには、数字をそのまま表示する」
これを 0 から 9 まで繰り返せばよいのですよね?

そのまま素直に考えればよいと思います。
表示してから書き換える必要なんてありません。
最初から、割り切れるとき「だけ」数字ではなくて "k" を表示するようにすればよいのですから。

ちょっと上記を構造化っぽく書いてみましょうか。

0 から 9 まで繰り返す
  3で割り切れる場合
    "k" を表示する
  3で割り切れない場合
    その数字を表示する

数字そのものを文字で置き換えるようなことをしなくても書けると思いませんか?

引用返信 編集キー/
■10334 / inTopicNo.22)  Re[11]: 偶然できたプログラムの解釈をお願い
□投稿者/ ツインクル (10回)-(2007/11/15(Thu) 19:37:30)
No10280 (サイトー さん) に返信
>
>> //ボタンを押すと、0から9の数が表示されるが、そのうち3で割り切れる数だけkで表示される
>> // GUIプログラムを作りたいのです。でもできないのです。(>_<)
>>
>>○ボタンを押すと、0から9の数が表示されるプログラムは何とかできました。
> === 中略 ===
>> for (int i = 1; i < 10; i++)
>
> まず、このfor文の内容では、1〜9までの数字しか表示されないと思います。
> (iは1からスタートして、10より小さい数まで、1ずつ増えています。iはint型、つまり整数なので、10より小さい最大数は9です。よって、1〜9)
> for文でどのようにループさせるかは間違いやすいところで、動かしてみてから「あ、やべ」と僕も思います(苦笑)
> が、きっちりと「何の数字から始まって」「何の数字で終わる」ようにしたいのか、等号・不等号の考え方は身に着けたほうがいいと思います。
>
>
>>このプログラムでは、int型からstring型に変換する必要があるのでしょうか?
> === だいぶ戻って ===
>> src += i+":"; //数を9まで表示する
>
> 勘違いだったらすみませんが、「int型からstring型に変換する」話って、以前、どなたかに指摘されてた内容ですよね。
> それを租借できずに苦しんでいるように思えます。
> 以前指摘されたソレを租借できていないことは、上記の1行を見ると読み取れます。
> なぜなら、string型の変数strに、平気でint型のiを代入しているからです。
> 普通、違う型の変数に、違う型の変数を代入することはできません。
> 上記のコードがエラーになっていないのは、うまいことc#さんがint型のiを、暗黙的にstringにしてくれているからですが、
> プログラマであれば、それを期待してこんなコードを書いてはいけないと思います。(という僕もなんちゃってプログラマですが)
> これはたまたま動いているだけ〜に等しいです。
> 「int型からstring型に変換する」ってのは、この部分のことで、
> src += i.ToString() + ":";
> とすべきだと思います。
> (ということで、以前ツインクルさんがやっていた「sringをstringに変換」しているソースの奇妙さ、納得できませんか?)

はい、その通りでした。


>>この後、if文を使って
>> if(i%3==0)
>>
>>{//この部分に「もし、表示された数字iを3で割ったときの余りが0になるときに、数字iを文字”k”に変換する、というコードを書けばよいのですよね。
>
> うむむ。よいのかな。
 はいそれでよいのです。
> ツインクルさんのロジックは、
> 一度0から9の数字を並べた文字列を作り、
> その後、その文字列から"3の倍数"の数字部分を"k"に文字列変換
> ・・・というものですか?

いえ、ボタンをおせば3の倍数のもkで表示され、後は数字でよいのです。
それで3で割りきれる数の場合に、その数字をKに置き換えて、テキストボックスに表示する部分のコードがうまくかけないのです。

if(i%3==0)
{ string p="j";//3で割り切れる数字を選び、その数字をkという文字列に置き換えればよいのだと思うのですが、ここまでが限界です。
textBox1.text=p.replace("j","k");
}*このコードはちがうな〜と思いながらかいてしまいました。


> またわからなくなったり、こちらの説明が下手な部分があれば(たくさんあると思いますが;)質問してくださいね。

懇切丁寧におしえていただき感謝しております。大変申し訳ありませんが続けてご指導いただけますでしょうか?

この問題が解けないと、何も手につかにような状況になっておりまいっています。これってびょうきなのでしょうかね。(これは蛇足でした
すみません。)
引用返信 編集キー/
■10336 / inTopicNo.23)  Re[11]: 偶然できたプログラムの解釈をお願い
□投稿者/ ツインクル (11回)-(2007/11/15(Thu) 19:44:00)
No10286 (やまだ さん) に返信
すみません。10286のレスをみる前に103334を書いてしまいました。


> ちょっと上記を構造化っぽく書いてみましょうか。
>
> 0 から 9 まで繰り返す
>   3で割り切れる場合
>     "k" を表示する

この場合、0:1:2:k:4:5:k:7:8:kと表示されるようにしたいのですが、それは可能なのでしょか?



引用返信 編集キー/
■10359 / inTopicNo.24)  Re[12]: 偶然できたプログラムの解釈をお願い
□投稿者/ ツインクル (12回)-(2007/11/16(Fri) 10:29:13)
No10336 (ツインクル さん) に返信
> ■No10286 (やまだ さん) に返信
>>>0 から 9 まで繰り返す
>>  3で割り切れる場合
>>    "k" を表示する
>
if(i%3==0)
{ i.Tostring()="k"; と、なるのでしょうか?

引用返信 編集キー/
■10365 / inTopicNo.25)  Re[13]: 偶然できたプログラムの解釈をお願い
□投稿者/ サイトー (7回)-(2007/11/16(Fri) 11:22:15)
2007/11/16(Fri) 11:29:25 編集(投稿者)
2007/11/16(Fri) 11:25:54 編集(投稿者)
2007/11/16(Fri) 11:24:52 編集(投稿者)

No10359 (ツインクル さん) に返信

>>■No10286 (やまだ さん) に返信
> >>>0 から 9 まで繰り返す
> >>  3で割り切れる場合
> >>    "k" を表示する
>>
> if(i%3==0)
> { i.Tostring()="k"; と、なるのでしょうか?

そんなことにはなりません!

・・・と、やまださんじゃないですが、横から失礼します。

ツインクルさんは、基本的な部分で、頭がごちゃごちゃになっているようですね。

iは、あくまで0〜9まで順に増える"数値"が入る変数です。
数値を1ずつ増やしている途中で、それを文字列と入れ替えたりしたら
次にi++されるときには、どうなっちゃうんですか?
「"k"+1」??
(実際には、stringに変換したものに代入しようとしてるからそこまでおかしくははなりませんが
 考え方としては、そのくらい間違っています)

ツインクルさんが作成すべき処理は、
 ×:数値が入るはずのint型変数に、なぜか"k"という文字列を入れてしまって、それを画面に表示して大変なことになること
 ○:数値が入っている変数ではなく、"k"という文字列を画面に表示すること
です。

実際のソースで見せるのが手っ取り早いのですが、自分で考えて理解すべきだと思うので・・・
がんばってください。

(僕宛の質問の方は、夕方、時間ができたら返信しますね。
 それまでに、途中のもので構わないので、ツインクルさんが作成しているコードを全文載せておいてもらえますか?)
引用返信 編集キー/
■10374 / inTopicNo.26)  Re[14]: 偶然できたプログラムの解釈をお願い
□投稿者/ ツインクル (13回)-(2007/11/16(Fri) 14:42:44)
No10365 (サイトー さん) に返信

お忙しいところありがとうございます。
自分でも何か基本的な部分が理解できていないような気がするのでが本で調べてもヒントになるようなサンプルが見あたらず
まいっています。(他の言語で書かれたものはありましたが、?でした)

private void button1_Click(object sender, EventArgs e)
//ボタンを押すと、0から9の数が表示されるが、そのうち3で割り切れる数だけkで表示される
// GUIプログラムを作りたいのです。でもできないのです。(>_<)
{

string src = " ";
int i;
for (i = 0; i < 10; i++)
{
src += i.ToString() + ":"; //数を9まで表示する

}
if (i % 3 == 0)
{
src = "k";



}
textBox1.Text = src;
引用返信 編集キー/
■10375 / inTopicNo.27)  Re[4]: 偶然できたプログラムの解釈をお願い
□投稿者/ επιστημη (654回)-(2007/11/16(Fri) 14:47:28)
επιστημη さんの Web サイト
2007/11/16(Fri) 14:48:07 編集(投稿者)
for (i = 0; i < 10; i++) {
  i が3で割り切れないなら src にiを数字にしたものをつなぐ。
  i が3で割り切れるなら src に"k" をつなぐ。
}

引用返信 編集キー/
■10376 / inTopicNo.28)  Re[5]: 偶然できたプログラムの解釈をお願い
□投稿者/ ツインクル (14回)-(2007/11/16(Fri) 15:22:13)
No10375 (επιστημη さん) に返信
> 2007/11/16(Fri) 14:48:07 編集(投稿者)
> 
> for (i = 0; i < 10; i++) {
>   i が3で割り切れないなら src にiを数字にしたものをつなぐ。
>   i が3で割り切れるなら src に"k" をつなぐ。
> }

アドバイスありがとうございます。

しかし、ボタンをクリックするとkとしか表示されません。

 string src = " ";
            int i;
            for (i = 0; i < 10; i++)
            {
                src += i.ToString() + ":"; //数を9まで表示する

            

            if (i % 3 == 0)
            {
                src = "k";
            }
            else 
                src = i.ToString();
            }


            textBox1.Text = src;


        }

引用返信 編集キー/
■10377 / inTopicNo.29)  Re[6]: 偶然できたプログラムの解釈をお願い
□投稿者/ επιστημη (655回)-(2007/11/16(Fri) 15:40:27)
επιστημη さんの Web サイト
2007/11/16(Fri) 15:40:54 編集(投稿者)
>>for (i = 0; i < 10; i++) {
>>  i が3で割り切れないなら src にiを数字にしたものをつなぐ。
>>  i が3で割り切れるなら src に"k" をつなぐ。
>>}
> アドバイスありがとうございます。
> しかし、ボタンをクリックするとkとしか表示されません。

↑と↓、やってることが違うやん。

>  string src = " ";
>  int i;
>  for (i = 0; i < 10; i++) {
>    src += i.ToString() + ":"; //数をつないでる。3で割れるか調べもせずに。
>    if (i % 3 == 0)
>    {
>      src = "k"; // つないでない。
>    }
>    else 
>      src = i.ToString(); // つないでない。
>    }
>    textBox1.Text = src; // 全部つなぎおわってから表示しなきゃダメっしょ。
>  }

引用返信 編集キー/
■10379 / inTopicNo.30)  Re[6]: 偶然できたプログラムの解釈をお願い
□投稿者/ サイトー (8回)-(2007/11/16(Fri) 16:16:02)
2007/11/16(Fri) 16:18:05 編集(投稿者)

No10376 (ツインクル さん) に返信

> アドバイスありがとうございます。
>
> しかし、ボタンをクリックするとkとしか表示されません。

επιστημη さんの指摘どおりに書けば、間違いなくちゃんと動きますよ。


ちなみに、以前他の方も提案されていましたが、デバッグ機能は使われていますか?
もし使い方がわからないなら、調べて使ってみた方が、プログラムの上達も早いと思います。

とりあえず、「デバッグ」メニュー→「ステップオーバー(O) F10」をクリックし、
その後、F10キー押下で、プログラムの1行1行でどのように動作しているかを見ながら、
どこで"k"としか表示しなくなっているのかを調べるといいと思います。

(ちゃんとした回答は、もうちょっと後で〜)

引用返信 編集キー/
■10381 / inTopicNo.31)  Re[7]: 偶然できたプログラムの解釈をお願い
□投稿者/ Ruku (8回)-(2007/11/16(Fri) 16:32:23)
なんだか、継ぎ足しているうちに何をやっているのか分からなくなっているような印象を受けますが…

何から指摘するべきなのか。
そもそも答えが出ているので、アドバイスすることが残っていないのですよね。

目の前にあるソースコードを見ずに、最初から順を追って書き直したらうまくいった、なんてことになりそうな気も。
引用返信 編集キー/
■10393 / inTopicNo.32)  Re[7]: 偶然できたプログラムの解釈をお願い
□投稿者/ ツインクル (15回)-(2007/11/16(Fri) 19:20:18)
No10377 (επιστημη さん) に返信
> 2007/11/16(Fri) 15:40:54 編集(投稿者)
> 
> >>for (i = 0; i < 10; i++) {
> >>  i が3で割り切れないなら src にiを数字にしたものをつなぐ。
> >>  i が3で割り切れるなら src に"k" をつなぐ。
> >>}
>>アドバイスありがとうございます。
>>しかし、ボタンをクリックするとkとしか表示されません。
> 
> ↑と↓、やってることが違うやん。
> 
>> string src = " ";
>> int i;
>> for (i = 0; i < 10; i++) {
>>   src += i.ToString() + ":"; //数をつないでる。3で割れるか調べもせずに。
>>   if (i % 3 == 0)
>>   {
>>     src = "k"; // つないでない。
>>   }
>>   else 
>>     src = i.ToString(); // つないでない。
>>   }
>>   textBox1.Text = src; // 全部つなぎおわってから表示しなきゃダメっしょ。
>> }
> 

ご指導いただき感謝しています。下記のように書いてみましたが、k9:9:と表示されます。どこがちがうのでしょうか?
 string src = " ";
            int i;
            for (i = 0; i < 10; i++)
            {
                if (i % 3 == 0)
                {
                    src = "k";
                    src += i.ToString() + ":"; //数を9まで表示する

                }
                else
                    src = i.ToString();
                    src += i.ToString() + ":";
            }


            textBox1.Text = src;


        }

引用返信 編集キー/
■10394 / inTopicNo.33)  Re[7]: 偶然できたプログラムの解釈をお願い
□投稿者/ ツインクル (16回)-(2007/11/16(Fri) 19:21:18)
No10379 (サイトー さん) に返信
> επιστημη さんの指摘どおりに書けば、間違いなくちゃんと動きますよ。
>
>
> ちなみに、以前他の方も提案されていましたが、デバッグ機能は使われていますか?
> もし使い方がわからないなら、調べて使ってみた方が、プログラムの上達も早いと思います。
>
> とりあえず、「デバッグ」メニュー→「ステップオーバー(O) F10」をクリックし、
> その後、F10キー押下で、プログラムの1行1行でどのように動作しているかを見ながら、
> どこで"k"としか表示しなくなっているのかを調べるといいと思います。
>

やってみましたが、????です。すみません。
引用返信 編集キー/
■10395 / inTopicNo.34)  Re[8]: 偶然できたプログラムの解釈をお願い
□投稿者/ ツインクル (17回)-(2007/11/16(Fri) 19:22:48)
No10381 (Ruku さん) に返信
> 目の前にあるソースコードを見ずに、最初から順を追って書き直したらうまくいった、なんてことになりそうな気も。
 
 愚鈍な私にアドバイスいただきありがとうございます。
引用返信 編集キー/
■10396 / inTopicNo.35)  Re[8]: 偶然できたプログラムの解釈をお願い
□投稿者/ επιστημη (657回)-(2007/11/16(Fri) 19:45:04)
επιστημη さんの Web サイト
> ご指導いただき感謝しています。下記のように書いてみましたが、k9:9:と表示されます。どこがちがうのでしょうか?

全然ちがうやん。

>  string src = " ";
>  int i;
>  for (i = 0; i < 10; i++)
>  {
>    if (i % 3 == 0)
>    {
>        src = "k"; // つないでない。
>        src += i.ToString() + ":"; // 3で割れたとき数を表示するの? なんで?
>    }
>    else
>        src = i.ToString(); // つないでない
>    src += i.ToString() + ":"; // この文はelseの外だし、なんで二度も数をつなぐの?
>  }
>  textBox1.Text = src;

やりたいことを素直に正直に表現すればいいのに。

引用返信 編集キー/
■10398 / inTopicNo.36)  Re[9]: 偶然できたプログラムの解釈をお願い
□投稿者/ ツインクル (18回)-(2007/11/16(Fri) 19:50:30)
No10396 (επιστημη さん) に返信
>> 全然ちがうやん。
>
>> string src = " ";
>> int i;
>> for (i = 0; i < 10; i++)
>> {
>> if (i % 3 == 0)
>> {
>> src = "k"; // つないでない。
>> src += i.ToString() + ":"; // 3で割れたとき数を表示するの? なんで?
>> }
>> else
>> src = i.ToString(); // つないでない
>> src += i.ToString() + ":"; // この文はelseの外だし、なんで二度も数をつなぐの?
>> }
>> textBox1.Text = src;
>
> やりたいことを素直に正直に表現すればいいのに。

つなぐという意味が理解できていないと思います。本当にすみません。
>
引用返信 編集キー/
■10399 / inTopicNo.37)  Re[10]: 偶然できたプログラムの解釈をお願い
□投稿者/ επιστημη (658回)-(2007/11/16(Fri) 19:55:23)
επιστημη さんの Web サイト
> つなぐという意味が理解できていないと思います。本当にすみません。

string str = "りんご";
これに"みかん"をつないで"りんごみかん"にしなさい。

str = "みかん"; これでいいですか? ダメですね。これじゃ"みかん"になっちゃいますね。

str += "みかん"; これならつながりますね。そゆこと。


引用返信 編集キー/
■10401 / inTopicNo.38)  Re[11]: 偶然できたプログラムの解釈をお願い
□投稿者/ ツインクル (19回)-(2007/11/16(Fri) 20:00:15)
No10399 (επιστημη さん) に返信
> string str = "りんご";
> これに"みかん"をつないで"りんごみかん"にしなさい。
> 
> str = "みかん"; これでいいですか? ダメですね。これじゃ"みかん"になっちゃいますね。
> 
> str += "みかん"; これならつながりますね。そゆこと。
> 
> 
 
できました。このコードでよろしいでしょうか?
 
string src = " ";
            int i;
            for (i = 0; i < 10; i++)
            {
                if (i % 3 == 0)
                {
                    src += "k";
                   
                }
                else
                    src += i.ToString();
                    
            }

            src += i.ToString() + ":"; //数を9まで表示する

            textBox1.Text = src;


        }
    }

}

引用返信 編集キー/
■10405 / inTopicNo.39)  Re[12]: 偶然できたプログラムの解釈をお願い
□投稿者/ 特攻隊長まるるう (95回)-(2007/11/16(Fri) 21:00:43)
No10401 (ツインクル さん) に返信
# 括弧の数が合ってない気もしますが。。。それは置いておいて

ループを抜けた後の
> src += i.ToString() + ":"; //数を9まで表示する
は何をしているのか、日本語でいいので説明していただけませんか?

ついでに言えば textBox1 には何が表示されましたか?
>できました。このコードでよろしいでしょうか?
思ってた通りの結果なら良い、違うなら良くないですよね?
実行結果を確かめてないのは、できたとはいいません。

# ついに我慢できなくなったよ><;
引用返信 編集キー/
■10407 / inTopicNo.40)  Re[13]: 偶然できたプログラムの解釈をお願い
 
□投稿者/ ツインクル (20回)-(2007/11/16(Fri) 21:32:03)
No10405 (特攻隊長まるるう さん) に返信
> ループを抜けた後の
>>            src += i.ToString() + ":"; //数を9まで表示する
> は何をしているのか、日本語でいいので説明していただけませんか?
 空文字のテキストボックスに、0:から9:までの文字を表示している、でしょうか?
 
> ついでに言えば textBox1 には何が表示されましたか?

 k12k45k78k10:と表示されました。

> >できました。このコードでよろしいでしょうか?
> 思ってた通りの結果なら良い、違うなら良くないですよね?
> 実行結果を確かめてないのは、できたとはいいません。
> 
> # ついに我慢できなくなったよ><;
色々とありがとうございます。

引用返信 編集キー/

<前の20件 | 次の20件>
トピック内ページ移動 / << 0 | 1 | 2 >>

管理者用

- Child Tree -