Try   HackMD

情報処理実習 第14回 質問回答ページ

リンク

  • [webEx]

質問&回答について

個別で来る質問・コメント等には答えることが出来ず,
授業時間内の質問フォームを通して質問・回答を行うという形式で統一されました.
(授業時間外の質問は,次回の授業時間内に質問フォームを通してお願いします)

授業時間ギリギリの質問に気づかないことがあります.
我々が質問に気づいていないと思われる場合は,
次回の授業時間中に再度質問を投稿してください.

質問内容に必ず書くこと

質問の際は,必ず下の4点を書いてください.

  • どの課題に関する質問か
  • わかっていること
  • 試してこと
  • そのうえでわからないこと

「どうしたらいいか?」という質問に答えることは出来ません.
自身で原因を探って意図通りに動くようにするのが実習内容です.

殆どのエラーはググれば説明が出てきます.
わからないことが起きた時はGoogle等で検索することを推奨します.

質問の内容によっては,「もう少し自力で考えてほしい(教科書・配布資料をよく読んでほしい,試行錯誤しながら自分のコードを触ってほしい)」「回答を控える」マークを回答状況ページにつける場合があります.

「質問番号n」の形で見出しをつけます.
基本的には新しい回答ほど上位に表示されます.
回答状況ページで回答状況を確認後,
Ctrl+F,Cmd+Fで自分の質問番号をページ内検索してください.
ただし,回答状況のH列は「回答書き込み完了」ではなく「今から回答を行います」の印です.

質問量に依っては「重複した質問」欄の更新が止まる場合があります.
そのため,重複した質問は回答の場所を検索出来ないことがあります.
また,質問する前に必ずこのページを見て,類似の質問がないことを確認してからGoogleフォームで質問を投稿してください.

質問と回答の例は以下の通りです.

質問番号0

hogeがhogehogeの場合,hogehogehogeはhogeですか?

#include <stdio.h>

int main(void) {
  printf("Hello World\n");
  return 0;
}

XXXがYYYなのでZZZをAAAするとBBBがCCCです.
重複した質問:質問番号i, 質問番号j,質問番号k


質問番号4

数値を入力してもかえってこない

 b=b++;

エラーや警告を読むようにしてください.
ググって自力で解決するスキルは重要です..

bについて,bにbを代入してからbに1を足すのか,
bに1を足してからbにbを代入するのかがわからない
という警告です.

main.c:11:5: warning: multiple unsequenced modifications to 'b' [-Wunsequenced]
 b=b++;
  ~ ^
1 warning generated.

質問番号3

どの数値を入力しても規格外になってしまう


int main(void) {
int size;
  printf(""みかんの直径[cm]を入力してください\n"");
  scanf(""%.1d"",&size);

実行すると以下の警告が出ます.

main.c:6:11: warning: invalid conversion specifier '.'
      [-Wformat-invalid-specifier]
  scanf("%.1d",&size);
         ~^
1 warning generated.

詳細はググってほしいですが,
「.」は無効
と1行目に書いてあります.

質問番号1 質問番号2

条件の部分で未満の部分をきちんと指定しているはずなのですが、6.1だとS , 6.7だとMと出力されてしまいます。これはなぜなのでしょうか。

#include <stdio.h>

int main(void) {
  float x=0;
  printf("みかんの直径[cm]を入力してください\n");
  scanf("%f",&x);

  if(5.5<=x && x<6.1){
    printf("Sサイズです\n");
  }
  return 0;
}

丸め誤差(https://blog.apar.jp/program/8900/ )によるものだと思います.
僕が狙ってこのようないやらしい問題を出したわけではないので対処法を書きます.
(下ような対処をしていなくても減点はしません.授業後にこの回答に気づいた人は心配しないでください)

例えばそれぞれの値を10倍し,

10*x<61

としてから大小関係を比較すれば
一応正しく判定出来るようになります.
(入力された値が小数点第一位までの数値ならばですが..)