掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.27682

while文とfor文について
投稿者---you(2006/07/19 01:06:46)



pro.1

#include<stdio.h>
main()
{
 int a=1000,b=700;
 int c=10,n=0;

 printf("%d 円, %d 個のとき\n",a,b);
 while(n<=3){
    if(b<c){
       a=a-a*n/10;
       printf("%d%%引き \\%d\n",n*10,a*b);
       n=4;
    }
    c=c*10;
    n=n++;
 }
 if((n==4)&&(b>=10000)){
    a=a-a*(n-1)/10;
    printf("%d%%引き \\%d\n",(n-1)*10,a*b);
 }
}


pro.2

#include<stdio.h>
main()
{
 int a,b,cnt,d;
 a=1000;
 b=700;
 printf(%d 円, %d 個のとき\n",a,b);

 for(cnt=0,d=1;b>=(d/10);cnt++,d*=10){
    if(b<d){
       if(cnt>=5){
          cnt=4;
       }
       a=a-a*(cnt-1)/10;
    }
 }
 printf("%d%%引き \\%d\n",(cnt-2)*10,a*b);
}



上記の2つのプログラム(while文で書いたものとfor文で書いたもの)で質問したいことがあります。
上記の2つのプログラムは個数により値引き額が変化するプログラムなわけですが、この2つのプログラム、採用するならばどちらの方が良いのかがよくわかりません。
上のプログラムのwhileでは必ず4回ループするのに対し、forはbの値によりループ回数が決まるといふうに解釈したのですがどちらをどういった理由で採用するかといわれた時、どういってよいのか悩んでしまいます。
この2つのやり方どちらの方がどう勝手が良いのか教えていただけないでしょうか。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:while文とfor文について 27684 ぽへぇ 2006/07/19 02:52:02
<子記事> Re:while文とfor文について 27690 επιστημη 2006/07/19 07:03:31
<子記事> Re:while文とfor文について 27694 TT414 2006/07/19 11:28:28
<子記事> Re:while文とfor文について 27697 ruby 2006/07/19 13:49:17
<子記事> Re:while文とfor文について 27698 asd 2006/07/19 14:47:29
<子記事> Re:while文とfor文について 27699 you 2006/07/19 18:41:45


No.27684

Re:while文とfor文について
投稿者---ぽへぇ(2006/07/19 02:52:02)


>上記の2つのプログラムは個数により値引き額が変化するプログラムなわ
>けですが、この2つのプログラム、採用するならばどちらの方が良いのか
>がよくわかりません。

コンパイルエラーの起こらないwhile文の方。
…というのはさておき、何個の時に何割引という仕様くらいは
明確にしてくださいね。



この投稿にコメントする

削除パスワード

No.27690

Re:while文とfor文について
投稿者---επιστημη(2006/07/19 07:03:31)


>この2つのやり方どちらの方がどう勝手が良いのか教えていただけないでしょうか。

同じです。優劣はありません。お好きにどうぞ。
for 使った方がループとしてまとまりがいいけども。




この投稿にコメントする

削除パスワード

No.27694

Re:while文とfor文について
投稿者---TT414(2006/07/19 11:28:28)


>n=n++;

未定義の記述があるので、whileの方はだめです。


この投稿にコメントする

削除パスワード

No.27695

Re:while文とfor文について
投稿者---Mook(2006/07/19 12:31:13)


while の方こそ for 文で書いた方が、すっきりしませんか。

for ( n=0 ; n<=3 ; n++ ) {
    if(b<c){
       a -= a*n/10;
       printf("%d%%引き \\%d\n",n*10,a*b);
       break;
    }
    c *= 10;
}



この投稿にコメントする

削除パスワード

No.27697

Re:while文とfor文について
投稿者---ruby(2006/07/19 13:49:17)


一般に
    for (a; b; c) {
        // 実際の処理
    }

という形式の「for文によるループ」は、それと等価の
    a;
    while (b) {
        // 実際の処理
        c;
    }

という形式の「while文によるループ」に置き換えることができます。

処理効率はおそらく同じでしょうから、ソースの見やすさなどの
観点からお好きな方を選べばよいかと。


この投稿にコメントする

削除パスワード

No.27698

Re:while文とfor文について
投稿者---asd(2006/07/19 14:47:29)


向こうでは既に指摘されていますがマルチポストです。

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200607/06070055.txt

何でこちらでレスがついてからマルチポストするんでしょうか?
適切に対処してくださいね。


この投稿にコメントする

削除パスワード

No.27699

Re:while文とfor文について
投稿者---you(2006/07/19 18:41:45)


ネットでのマナーがなかったことまずはお詫び申し上げます。
レスをいただいた方、大変失礼なことをしてしまったと思っております。
申し訳ありませんでした。
また指摘してくださった方有難う御座います。マルチポスト、多重投稿の意味を取り違えていました。取り違えたといってもレスを頂いてからの投稿は非常識であったことに間違いありません。
本当に申し訳ありませんでした。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧