質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • C

    3991questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

途中の計算過程を描きたいです。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 259

Teemro_431265

score 19

0ではない自然数を入力した時にnが1でなければ繰り返しを行い、偶数か奇数かを判定した後に偶数ならnを2割る、奇数ならnを3倍して1足すというものを作り、その計算過程を示す物を作りたいです。

#include <stdio.h>
int main()
{
  int n;

  printf("0でない自然数nを入力して下さい\n");
  scanf("%d", &n);

  while (n!=1) {
    if(n%2==0){
      n/=2;
    }
    else{
     n=n*3+1;
    }
  }

  printf("終了\n");
  return 0;   
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • LouiS0616

    2018/06/30 19:07

    『そのまま終了』になってしまったと判断した根拠はなんでしょうか。

    キャンセル

  • Teemro_431265

    2018/06/30 19:13

    すみません、質問自体が少し違っていました。途中の計算過程も表示されるようにしたいです。

    キャンセル

回答 3

checkベストアンサー

+3

おそらく、動作自体は正常にしています。ただし、ループを回している部分に何も出力するコードがないので、動作を外部から知ることができないだけです。


(追記を受けて)

whileループの末尾では次のnになっていますので、ループを閉じる直前にprintfなどを入れて出力させましょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/30 19:22

    なるほど、それは知りませんでした。ありがとうございます。

    キャンセル

+1

途中の計算過程も表示されるようにしたい

whileブロック内でnを表示するようにすればよいだけです。

while(n != 1) {
    ...

    printf("%d\n", n);
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/30 19:22

    それだけでできるんですね!ありがとうございます。

    キャンセル

  • 2018/06/30 19:32

    printfを入れたのですが表示されませんでした。

    キャンセル

  • 2018/06/30 19:38

    コードを見せてください。また、どんな数値を入力しましたか。

    キャンセル

  • 2018/06/30 19:42

    #include <stdio.h>
    int main()
    {
    int n;

    printf("0でない自然数nを入力して下さい\n");
    scanf("%d", &n);

    while (n!=1) {
    if(n%2==0){
    n/=2;
    }
    else{
    n=n*3+1;
    }
    printf("%d",n);
    }

    printf("終了\n");
    return 0;
    }

    入力は3です。

    キャンセル

  • 2018/06/30 19:45

    そのコードだと『105168421』が出てきますが、それすらも出力されないのでしょうか。
    またその場合、『0でない自然数nを入力して下さい』は正常に出力されていますか。

    キャンセル

  • 2018/06/30 19:55

    0でない自然数nを入力して下さい
    3
    105168421終了
    と、出力されます。

    キャンセル

  • 2018/06/30 19:58

    改行していないので繋がって表示されてしまっているだけです。
    printf("%d",n) ⇒ printf("%d\n", n)

    ---
    『表示されない』のと、『期待したとおりに表示されない』のは天と地ほどに違います。
    質問自体もそうでしたが、もう少し細かな表現に気を付けられると良いでしょう。

    キャンセル

  • 2018/06/30 20:04

    すみません、数字が入力されていたのはわかったんですけどそれが出力だとはわからなかったんです。「なんだ105168421って」って感じだったもので。
    以後もっと具体的に書くように心がけます。ご指摘ご回答ありがとうございました。

    キャンセル

0

ループの中で(先頭でも末尾でもいいので)変数の中身を表示すればいいはずです。

ところで、これってコラッツの予想ですけど、証明されたんですかね?私が学生のときは予想でした。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/30 19:27

    いや、照明はしていないので予想ですね

    キャンセル

同じタグがついた質問を見る

  • C

    3991questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。