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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

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

Q&A

解決済

3回答

4171閲覧

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

Teemro_431265

総合スコア29

C

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

0グッド

0クリップ

投稿2018/06/30 10:00

編集2018/06/30 10:14

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

c

1#include <stdio.h> 2int main() 3{ 4 int n; 5 6 printf("0でない自然数nを入力して下さい\n"); 7 scanf("%d", &n); 8 9 while (n!=1) { 10 if(n%2==0){ 11 n/=2; 12 } 13 else{ 14 n=n*3+1; 15 } 16 } 17 18 printf("終了\n"); 19 return 0;

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2018/06/30 10:07

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

2018/06/30 10:13

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

回答3

0

ベストアンサー

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


(追記を受けて)

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

投稿2018/06/30 10:07

編集2018/06/30 10:16
maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Teemro_431265

2018/06/30 10:22

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

0

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

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

C

1while(n != 1) { 2 ... 3 4 printf("%d\n", n); 5}

投稿2018/06/30 10:17

編集2018/06/30 10:37
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Teemro_431265

2018/06/30 10:22

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

2018/06/30 10:32

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

2018/06/30 10:38

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

2018/06/30 10: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です。
LouiS0616

2018/06/30 10:45

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

2018/06/30 10:55

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

2018/06/30 10:58

改行していないので繋がって表示されてしまっているだけです。 printf("%d",n) ⇒ printf("%d\n", n) --- 『表示されない』のと、『期待したとおりに表示されない』のは天と地ほどに違います。 質問自体もそうでしたが、もう少し細かな表現に気を付けられると良いでしょう。
Teemro_431265

2018/06/30 11:04

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

0

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

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

投稿2018/06/30 10:24

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Teemro_431265

2018/06/30 10:27

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問