パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

生半可な知識で自爆」記事へのコメント

  • >「一見動いているように見える」=「ちゃんと動いてる」
    >という考え方はC言語に関してまったく通用しないことから叩き込めよ。

    教えてる、はずなんですけど…。
    他にも、整数配列を操作するfor文で
    int hoge[100];

    for(loop=0;loop<=100;loop++){
    hoge[loop]=some_function(loop);
    }
    みたいなことを書くのは、日常茶飯事&何度も「やったらダメ」と言っているのに聞いてくれない、という状況でしてorz

    >とても卑猥な4文字でも仕込んでたのかと思った
    実は「やや肥満」という単語でした。
    この単語を出したところで本質では無いので伏せ字?にしただけです。

    >この前のエントリのも合わせて考慮すると、まだ研修レベルですね。
    >C言語での実作業を任せるのはかなり恐い。
    まぁ、研修、というか専門が情報でない人に対する授業なので良いんですが…
    他でC言語を使わない生活になっていることを望みます…

    >終端の'\0'のことも教えておくべきではないかと思いました。
    これはさすがに教えてます。だから余裕をもって10バイト分なんだと思いますが…

    >で,正しくはどう書いたら良いのでしょうか?
    というタイトルに対し、コメントで
    >本当のところは、コピーの必要がないじゃないの?
    とありますが、コメントの方正解です。

    BMIを計算させて、その値で「やせ型」「普通」「やや肥満」「肥満」と表示させるプログラムなだけなのです。

    if(BMI<18.5){
            printf("やせ型です\n");
    }else if(BMI<25){
            printf("普通です\n");
    }else if(BMI<30){
            printf("やや肥満です\n");
    }else{
            printf("肥満です\n");
    }

    ということを書けば良いだけ(なことに加え、最初に出してきたソースはこのように書いてあった)のところを、

    if(BMI<18.5){
            strcpy(hoge,"やせ型");
    }else if(BMI<25){
            strcpy(hoge,"普通");
    }else if(BMI<30){
            strcpy(hoge,"やや肥満");
    }else{
            strcpy(hoge,"肥満");
    }
    printf("%sです\n",hoge);

    と書き直して出してきた、というわけです。

    これは、さすがに愚痴らざるを得ない、と思えますよねorz
    #もうね、自分の教え方が悪いのかと、本当に落ち込みます。
    • あ、ちなみに、
      >int hoge[100];

      >for(loop=0;loop<=100;loop++){
      > hoge[loop]=some_function(loop);
      >}
      これをやったら(forの継続条件のところにイコール入れると他の変数を壊す)という話、

      int loop;
      int hoge[10];
      for(loop=0;loop<=10;loop++){
              hoge[loop]=0;
      }
      でコンパイル、実行するとhoge[9]の次の領域にloopが置かれていることがある(実際、そこに置かれるというのはgdbで確認した)ので、変数loopがforループのインクリメント以外で書き変わり、無限ループになることがあるよ、というのを目の前で実演(無限ループを実行し)し、「こう書いたらダメですよ」と口うるさく説明した、その30分後に書いてくれる素敵すぎる人達なんです…orz
      まったくもって話を聞いてない。
      ナメられてるのかなぁ。
      親コメント
    • by Anonymous Coward
      でも、最後の1行は評価できるよ。C言語以外の手続き型言語の経験者なんじゃないのかな。前者の解答例より、ずっとスマートだよ。

      問題は、hogeの型はcharの配列ではなくて、const char*で良いってことに気が付いていないこと。気が付いてないから、配列を使って、コピーをしてはまると。

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

処理中...